2016-08-05 63 views
0

我試着註冊一個漂亮的打印機。當我在gdb命令提示符下編寫「info pretty-printer」時,它顯示出來。但這有什麼幫助。在註冊漂亮的打印機之前,我必須做我所做的一切。例如,在註冊之前,如果我找到了我漂亮的打印機,然後用「command-name expr」調用invoke方法,我在註冊後仍然會這樣做。註冊帶給我漂亮的打印機有什麼價值。如何註冊一個漂亮的打印機在GDB中有幫助

回答

0

如果您的漂亮打印機具有關聯的查找功能,gdb print命令可以調用漂亮的打印機,而無需顯式調用由漂亮的打印機提供的命令。 This page包含一個使用gdb.printing模塊通過gdb.printing.RegexpCollectionPrettyPrinter將兩個漂亮打印機與兩個正則表達式關聯的示例。也許你也可以通過追查gdb.pretty_printers的內容找到原生的例子;礦包括一個對象libstdcxx.v6.printers.Printer和一個對象gdb.printing.RegexpCollectionPrettyPrinter;前者在我的系統中定義爲/usr/share/gcc-4.8/python/libstdcxx/v6/printers.py

0

之前註冊的,如果我採購我漂亮的打印機,然後調用「命令名稱EXPR」的 invoke方法,我還是做同樣的後 登記。

從這句話來看,你聽起來像是令人困惑的命令和漂亮的打印機。命令實現有一個invoke方法。漂亮的打印機沒有。此外,從gdb命令行(如(gdb) command-name)調用一個命令,而只有在打印值時(例如通過print mumble(或在其他點,例如在回溯期間打印參數值時)才調用漂亮打印機)。

註冊您的命令,好像它是一個漂亮的打印機是沒有用的,可能只會導致偶爾的Python異常打印。

+0

目前,如果我寫了一個python腳本,它創建一個新的命令來打印鏈表結構。如果我想要一臺漂亮的打印機,我該怎麼辦。這個結構看起來會不會一樣,還是會和我以前做的完全不一樣。 – Sharath

+0

請參閱https://sourceware.org/gdb/current/onlinedocs/gdb/Writing-a-Pretty_002dPrinter.html#Writing-a-Pretty_002dPrinter。結構會有所不同 - 解碼數據結構的邏輯將類似,但與gdb的接口將有所不同。漂亮打印機通常比自定義命令更好,因爲它們更好地與gdb集成。 –