就開源開發而言,我是一個新手。我已經在幾個項目上嘗試過我的手,但由於代碼基數龐大,最終總是感到沮喪。如何使用gdb來剖析像字處理器這樣的應用程序
我一直面臨的一個特殊問題是無法確定大代碼庫的哪個部分處理特定的工作。說,如果我想知道哪部分代碼在文字處理器中進行文本渲染和佈局。
人們經常給出的建議是使用gdb來瀏覽程序。
所以我試圖打開我的文字處理器(這是與調試標誌編譯)的文件,並得到一個回溯,但奇怪的是,我所獲得的是一些普通的函數調用,其中沒有涉及到打開文件。
這是我上執行gdb /usr/local/bin/abiword
(gdb) bt
0 0xffffe424 in __kernel_vsyscall()
1 0xb63b472b in poll() from /lib/libc.so.6
2 0xb66256eb in g_poll() from /usr/lib/libglib-2.0.so.0
3 0xb6616db6 in ??() from /usr/lib/libglib-2.0.so.0
4 0xb66174bb in g_main_loop_run() from /usr/lib/libglib-2.0.so.0
5 0xb6d6668d in gtk_main() from /usr/lib/libgtk-3.so.0
6 0xb7c04a4d in AP_UnixApp::main (szAppName=0x8048970 "abiword", argc=1,
argv=0xbffff704) at ap_UnixApp.cpp:1332
7 0x080488a3 in main (argc=1, argv=0xbffff704)
at ../src/wp/main/gtk/UnixMain.cpp:30
請建議GDB如何可以用於這種目的而獲得的。對不起,如果我的問題聽起來太不雅觀,但我真的在這樣一個任務的話丟失,所以谷歌也沒有幫助。 :|
你不能隨便選擇一個程序,並運行一個調試器,期望找到一個說明「這部分處理文本的圖形輸出」或其他內容的可讀代碼。除非您在彙編代碼和堆棧跟蹤方面非常先進,否則至少需要調試符號,而使用調試信息和源代碼的目標文件使事情變得更加容易。 – 2011-12-22 23:48:35
謝謝,但我確保使用調試信息編譯程序。 – navgeet 2011-12-22 23:52:25
您可以編輯您的問題並添加該信息。 :) – 2011-12-23 00:12:41