我正在使用mysql cpp库。 我从那里检查最近的副本bzr trunk和 用cmake生成库。
我第一次使用发布模式,第二次使用调试模式进行构建。 这两个图书馆都有
a mysql_debug.cpp
U mysql_debug
有没有办法检查程序(C或C ++代码)或使用nm该库是发布库或调试库
答案 0 :(得分:1)
我看过nm的假阴性,所以我不相信它。当我想检查一个目标文件是否有调试信息时,我在目标文件或库上运行objdump -x并查看是否有标题表示dbg,stabs或dwarf。从任何方面来说,这都不是最优雅的解决方案,但它从来没有出现过错误,当你有一个调试和发布版本进行比较时,很容易看到差异。
答案 1 :(得分:0)
执行objdump -x,将输出存储在文件中并搜索dll。如果您看到库链接到Windows发布库,那么它的发行版本就会调试版本。
答案 2 :(得分:0)
调试版本和发布版本之间的差异通常是由于无效代码的优化方式不同,而不是兼容性,所以很幸运,其中一个工作而另一个不工作(它也可能是另一种方式'圆形)
在valgrind
下运行该程序,看看是否标记了任何非法访问。