标签:
entrianattachthreadcwinapp |
分类: 计算机与 Internet |
当用Visual Studio上的Entrian Attach插件后,发现用了,程序会出错,不用正常。区别在于AfxGetThread返回空。经过反复调试,发现区别在于用了Entrian Attach后,创建了一个新线程,而区别就在于这时进程初始化代码的CWinApp的子类也在这个新线程初始化,而不是main,当main thread代码
标签:
cmakefortranvsintel-fortran-compil |
分类: 计算机与 Internet |
标签:
dockerubuntusources.list |
分类: 计算机与 Internet |
E: Unable to locate package libmrm4:i386
RUN echo '\
debhttp://deb.debian.org/debianbookwormmain\
debhttp://deb.debian.org/debianbookworm-updatesmain\
debhttp://security.debian.org/debian-securitybookworm-securitymain\
debhttp://ftp.debian.org/debianbookworm-backportsmain' >> /etc/apt/sources.list
标签:
vscodepluginbash-debug |
分类: 计算机与 Internet |
标签:
pythonpipanytree |
分类: 计算机与 Internet |
由于目前公司政策规定,工作电脑不能上网,本来pip3 install anytree可以搞定的事情,需要在外部能上网的电脑先装,然后把文件夹拷贝到内部电脑再工作。
于是找到pip3 install anytree到底被装哪里了就显得很重要了。
import anytree
print(anytree.__file__)
这两行专门干这个事情
C:\Users\shiyang.chen\AppData\Local\Packages\PythonSoftwareFoundation
然后相应的去另一台机器,找个已经安装的库,找到要拷贝去的路径,拷贝上,就可以了。
标签:
pythonshellstaticdumpbinsymbol |
分类: 计算机与 Internet |
由于项目有大量静态库,并且在Windows平台的实现和Linux有不少区别,因此需要在Windows平台也做一份符号依赖分析。
从静态库导出符号,这步需要借助dumpbin工具。
用powershell实现
$originalPath
cd D:\Neuecax_Dynamic\olb
Remove-Item
Get-ChildItem
标签:
shellsymbolmaxdepthcfilt |
分类: 计算机与 Internet |
目前在做依赖库时遇到问题,符号是Linux产生的,而现在要写windows上的def文件,直接拷贝不工作,所以要导成原始符号,再去Windows上匹配。
创建convertToRawSymbol.sh
#!/bin/sh
raw_symbol_file=$(basename $1 .T.json).raw_sym
jq -r '.[]' $1 | xargs -n 1 -P `nproc` c++filt > $raw_symbol_file
这需要安装jq库。
在外层进入symbols\result目录
cd
find
这样能把原始的json文件转成对应的raw_sym文件。
接下来需要把这些
标签:
symbolshellpythongraphviz |
分类: 计算机与 Internet |
又来了个新公司,新产品用了1128个静态库。现在想做一个静态库依赖关系示意图。
想法,先输出所有符号,找出其中T和U的符号,在此基础上,去分析相互之间的引用关系。
先从.a到符号
find . -name '*.a' | xargs -P `nproc` -I {} sh -c 'nm {} > $(basename {} .a).full_symbol'
并行产生1128个文件。
每个里面形如
XXX.o:
xxxx
xxxx
这样的其他符号。
然后从一个full_symbol生成两个.USYM和.TSYM分别只包括U和T的符号
标签:
staticlinksymbol |
分类: 计算机与 Internet |
创建main.cpp
int referencedFunctionA();
int main()
{
}
并实现一个静态库,包括两个文件a.cpp,b.cpp
int unresolvedExternalFuncti
// TODO: 这是一个库函数示例
int referencedFunctionA()
{
return 3;
}
int unreferenedFunction()
{
return unresolvedExternalFuncti
//return 5;
}
b.cpp
int referencedFunctionB()
{
return unresolvedExternalFuncti
}
下面谈结论
1. 主程序引用a.cpp中方法r
标签:
llvmstringmap |
分类: 计算机与 Internet |
LLVM源码阅读之五 --- StringMap
今天来认识一下这个StringMap类,它是一个Map类,把String做Key,任意对象做Value
template AllocatorTy = MallocAllocator>
class StringMap : public StringMapImpl {
AllocatorTy Allocator;
public:
using MapEntryTy = StringMapEntry;
从StringMapImpl继承。
class StringMapImpl {
protected:
// Array of NumBuckets pointers to entries, null pointers are holes.
// TheTable[NumBuckets] contains a sentinel value for easy iteration. Followed
// by an array of the actual hash values as unsigned integers.
StringMapEntryBase **TheTable = nullptr;
unsigned NumBuckets = 0;
unsigned NumItems = 0;
unsigned NumTombstones = 0;
unsigned ItemSize;
它存了StringMapEntryBase的二级指针