嵌入式中使用gdb

2021-08-27 22:35:07 字數 2005 閱讀 9514

[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的效率。因此我這裡主要對跨平台除錯做乙個簡要的說明。我們對機頂盒上的軟體進行除錯主要有兩種方式,本地除錯和遠端除錯。遠端除錯還有乙個問...