簡體   English   中英

如何知道庫是調試庫還是發布庫?

[英]How to know library is debug library or release?

我正在使用mysql cpp庫。 我從那里的bzr主干簽出最近的副本,並使用cmake生成庫。

第一次使用發布模式,第二次使用調試模式進行構建。 兩者都有

a mysql_debug.cpp
U mysql_debug

有沒有一種方法可以簽入程序(C或C ++代碼)或使用nm將該庫作為發行庫或調試庫

我已經看到nm的假陰性,所以我不相信它。 當我想查看目標文件是否具有調試信息時,我在目標文件或庫上運行objdump -x,並查看是否存在標有dbg,stabs或dwarf的標頭。 無論如何,這都不是最優雅的解決方案,但是它從來沒有出錯,並且可以很容易地看到調試和發布版本之間的差異。

執行objdump -x,將輸出存儲在文件中並搜索dll。 如果您看到該庫與Windows Release庫鏈接,則其Release版本,否則為debug版本。

調試版本與發行版本之間的差異通常是由於無效代碼的優化方式有所不同,而不是不兼容,因此,幸運的是,其中一個有效而另一個不起作用(也可能是另一種方式)。

valgrind下運行該程序,以查看是否標記了任何非法訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM