2

我正在使用 mysql cpp 库。我从那里 bzr trunk 签出最近的副本并使用 cmake 生成 library 。

我第一次使用发布模式,第二次使用调试模式进行构建。两个图书馆都有

a mysql_debug.cpp
U mysql_debug

有没有办法检查程序(C 或 C++ 代码)或使用 nm 该库是发布库或调试库

4

3 回答 3

1

我已经看到了 nm 的误报,所以我不相信它。当我想检查目标文件是否有调试信息时,我在目标文件或库上运行 objdump -x 并查看是否有标有 dbg、stabs 或 dwarf 的标头。无论如何,这不是最优雅的解决方案,但它从来没有错,当你有一个调试和发布版本来比较时,很容易看出差异。

于 2011-03-24T08:27:18.953 回答
0

执行 objdump -x ,将输出存储在文件中并搜索 dll 。如果您看到该库与 Windows 发布库链接,则说明其发布版本,否则为调试版本。

于 2012-07-13T13:03:03.800 回答
0

调试和发布版本之间的差异通常是由于无效代码的优化方式不同,而不是不兼容,因此其中一个工作而另一个不工作是纯粹的运气(也可能是相反的方式)。

运行程序valgrind以查看是否标记了任何非法访问。

于 2012-07-13T13:48:31.513 回答