我試圖調試來自Crypto ++庫的一些代碼,但在會話期間我收到了非感性信息。調試器無法匹配庫中的源代碼或步驟代碼
感興趣的功能是DEREncodePrivateKey
。它在DL_PrivateKey_EC<T>
上的成員函數(Crypto ++大量模板化)。
228 pk.DEREncodePrivateKey(encoder);
(gdb) s
non-virtual thunk to CryptoPP::DL_PrivateKey_EC<CryptoPP::ECP>::DEREncodePrivateKey(CryptoPP::BufferedTransformation&) const
(this=0x7fff5fbfeca0, [email protected]) at dll.cpp:690
Line number 690 out of range; dll.cpp has 146 lines.
dll.cpp可以在trunk/c5/dll.cpp可以找到,並且它只有146名報行廣告GDB。
目的是dynamic_cast
只是在問題前行:
const PKCS8PrivateKey& pk = dynamic_cast<const PKCS8PrivateKey&>(key);
我建立從源代碼庫-O0 -g3
,所以我想我最小化一些/大部分的典型問題。我試過用不同的編譯器(g ++和clang ++)構建庫和我的測試程序,並且我試着用不同的調試器(gdb和lldb)調試它。但是我仍然得到非感性的信息,圖書館不能在這個領域走出來。其他方面都可以(在問題出現之前可以看到)。
我也確定我正在使用我的圖書館版本。它被鏈接爲靜態庫,使用庫的完整路徑,並確認蘋果公司並沒有偷偷進入動態庫。
我需要執行DL_PrivateKey_EC<CryptoPP::ECP>::DEREncodePrivateKey
以查看發生了什麼。我認爲被調用的函數是在eccrypto,但我想在調試器下看到它。
任何想法如何進行?