我正在使用 mysql cpp 库。我从那里 bzr trunk 签出最近的副本并使用 cmake 生成 library 。
我第一次使用发布模式,第二次使用调试模式进行构建。两个图书馆都有
a mysql_debug.cpp
U mysql_debug
有没有办法检查程序(C 或 C++ 代码)或使用 nm 该库是发布库或调试库
我正在使用 mysql cpp 库。我从那里 bzr trunk 签出最近的副本并使用 cmake 生成 library 。
我第一次使用发布模式,第二次使用调试模式进行构建。两个图书馆都有
a mysql_debug.cpp
U mysql_debug
有没有办法检查程序(C 或 C++ 代码)或使用 nm 该库是发布库或调试库
我已经看到了 nm 的误报,所以我不相信它。当我想检查目标文件是否有调试信息时,我在目标文件或库上运行 objdump -x 并查看是否有标有 dbg、stabs 或 dwarf 的标头。无论如何,这不是最优雅的解决方案,但它从来没有错,当你有一个调试和发布版本来比较时,很容易看出差异。
执行 objdump -x ,将输出存储在文件中并搜索 dll 。如果您看到该库与 Windows 发布库链接,则说明其发布版本,否则为调试版本。
调试和发布版本之间的差异通常是由于无效代码的优化方式不同,而不是不兼容,因此其中一个工作而另一个不工作是纯粹的运气(也可能是相反的方式)。
运行程序valgrind
以查看是否标记了任何非法访问。