2013-11-27 38 views
1

在我的工作中,我需要分析一些軟件並獲得一些在未知時間之前錄製的壓縮文件。其中一個文件(logging.supp)用於抑制記錄錯誤。有沒有辦法重用valgrind抑制文件?

我猜日誌和其他部分在壓縮文件的生成和我的分析之間發生了變化。

據我瞭解,valgrind使用堆棧來確定是否應該抑制泄漏。

是否需要重新生成壓縮文件或者是否有方法來更改文件中的某些內容?

例抑制輸入:

{ 
<insert_a_suppression_name_here> 
Memcheck:Leak 
fun:_Znwj 
fun:_ZN3tsd6common5types8SmartPtrINS0_7logging19LogSimpleDateFormatEEaSEPS4_ 
fun:_ZN3tsd6common7logging23LogDatePatternConverterC1ESt6vectorISsSaISsEE 
fun:_ZN3tsd6common7logging16LogPatternParser15createConverterEcSt6vectorISsSaISsEE 
fun:_ZN3tsd6common7logging16LogPatternParser17finalizeConverterEcSsiSsNS0_5types8SmartPtrINS1_17LogFormattingInfoEEERSt6vectorINS4_INS1_19LogPatternConverterEEESaIS9_EERS7_IS6_SaIS6_EE 
fun:_ZN3tsd6common7logging16LogPatternParser5parseESsRSt6vectorINS0_5types8SmartPtrINS1_19LogPatternConverterEEESaIS7_EERS3_INS5_INS1_17LogFormattingInfoEEESaISC_EE 
fun:_ZN3tsd6common7logging16PatternLogLayout15activateOptionsEv 
fun:_ZN3tsd6common7logging16PatternLogLayoutC1ERKSs 
fun:_ZN3tsd6common7logging14LoggingManager4initENS0_5types8SmartPtrINS1_23LogManagerConfigurationEEE 
fun:_ZN3tsd6common7logging14LoggingManager4initERKSsS4_ 
fun:_ZN3tsd6common7logging14LoggingManager9getLoggerERKSs 
fun:_ZN3tsd6common7logging6LoggerC1ERKSs 
} 

我發現,喜歡這樣的回答:

https://stackoverflow.com/a/14781867/2764334

我可以用點也忽略了一些功能,這些功能中間棧條目?

函數名稱是如何生成的?對我來說,它看起來像_Znjw或_ZN3tsd是主要的名字?

你能幫我找到上述問題的文檔嗎?

回答

2

我也可以使用點來忽略一些中間堆棧條目的函數嗎?

是。

如何生成函數名?

它們是由編譯器生成的損壞的函數名稱;它們包含名稱空間和/或類作用域,函數名稱和參數。您可以使用c++filt對它們進行取消處理。

對我來說,它看起來像_Znjw或_ZN3tsd是主要的名稱?

_Znjwoperator new(unsigned)_ZN3tsdnamespace tsd中的前綴。

你能幫我在哪裏找到上述問題的文檔?

Valgrind抑制文件記錄在here。 GNU mangling格式似乎沒有正式記錄;使用Google並採取任何你找到的一撮鹽(假設你不想通過編譯器源代碼來查看名稱是如何生成的)。

相關問題