[b]編譯[/b]
[color=darkblue]for gdb:[/color]
/path/to/gdb-src/configure --target=arm-linux-gnueabi
make
[color=darkblue]for gdbserver[/color]
[quote]/path/to/gdb-src/gdb/gdbserver/configure --host=arm-linux-gnueabi
../.././../gnulib/import/mbrtowc.c:125: error: 'mb_cur_max' undeclared (first use in this function)
vim ../gnulib/import/mbrtowc.c
#define mb_cur_max 1
make
[/quote]
[b]使用[/b]
[color=darkblue]on embeded system:[/color]
[quote]gdbserver target_ip:target_port prog_dbg[/quote]
[color=darkblue]on pc:[/color]
[quote]cd gdb
./gdb
>>target remote target_ip:target_port
[/quote]
[color=red]這時會出現錯誤:
錯誤型別:
python exception installation error: gdb.execute_unwinders function is missing:
這個錯誤表明需要安裝gdb
所以make install
[/color]
[b]除錯[/b]
(1)改變gdb訊號處理的設定
比如,以下設定會告訴gdb在接收到sigint時不要停止、列印出來、傳遞給除錯目標程式
[quote]***********************************==
(gdb) [color=darkblue]handle sigint nostop print pass[/color]
sigint is used by the debugger.
are you sure you want to change it? (y or n) y
signal stop print pass to program description
sigint no yes yes interrupt
(gdb)
***********************************==
[/quote]
(2)使用gdb命令直接向除錯的應用程式傳送訊號
首先在你希望傳送訊號的語句處設定斷點,然後執行程式,當停止到斷點所在位置後,用gdb的signal命令傳送訊號給除錯目標程式
[quote]***********************************=
(gdb) [color=darkblue]signal sigint[/color]
continuing with signal sigint.
breakpoint 1, handler (signal=2) at main.cpp:15
15 printf("signal handler.../n";
***********************************=
[/quote]
[b]切換執行緒[/b]
[quote]info threads 顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用到這個id。 前面有*的是當前除錯的執行緒。
thread id 切換當前除錯的執行緒為指定id的執行緒。
break thread_test.c:123 thread all 在所有執行緒中相應的行上設定斷點
嵌入式裝置中使用QWS KEYBOARD
最近發現乙個問題,當我在嵌入式裝置中使用環境變數qws keyboard的時候,執行qt程式,程式會被掛起。串列埠終端那邊無法再輸入任何東西。上網查詢原因,發現也有其他的人碰到過這個問題,他們大多數的解決辦法就是使用qws usb keyboard,但是由於我使用的是i2c的鍵盤裝置,而不是usb的...
嵌入式gdb工具編譯
對於嵌入式gdb而已,分為兩種,這兩種方法的的區分是鑑於使用和編譯後的工具而言。1 第一種是開發板上使用的gdb,就像pc機上linux系統使用gdb一樣。2 第二種是開發板上使用單板的gdb client,pc機上使用pc版本gdb server。兩者通過網路來互動資訊實現除錯。筆者除錯是使用的第...
嵌入式的gdb除錯
在開發過程中有很多問題如果用gdb進行除錯跟蹤會大大提高效率,但是我發現不少同事對於gdb除錯概念比較模糊,特別是跨平台的除錯,以至於放棄用gdb除錯而影響排除bug的效率。因此我這裡主要對跨平台除錯做乙個簡要的說明。我們對機頂盒上的軟體進行除錯主要有兩種方式,本地除錯和遠端除錯。遠端除錯還有乙個問...