簡體   English   中英

在C文件中設置GDB斷點

[英]Set GDB breakpoint in C file

在編譯之前,是否可以在C文件中添加GDB斷點? 目前,我必須在通過GDB編譯后指定斷點。

我正在尋找類似JavaScript的debugger; 聲明。

不是這樣,但你可以插入一些有用的函數調用:

一種選擇是創建一個函數:

void break_here ()
{
  /* do nothing */
}

然后在任何你想要的地方調用它,但要小心它不會被內聯(將它放在不同的文件中,或添加“noinline”屬性)。

然后,在GDB中,只需在break_here上設置一個斷點,就完成了。 如果您發現每次設置該斷點都很繁瑣,可以在主目錄或包含斷點命令的當前工作目錄中創建名為.gdbinit的文件。

在Linux上運行的另一個選項是使用信號:

raise (SIGUSR1);

你可以使用你喜歡的任何信號,但最好使用一個不會殺死你的程序的信號(盡管你可以配置GDB不將它們傳遞給你的程序,如果你選擇的話)。

我不知道直接設置斷點的方法,但是GDB會捕獲中斷,所以這是一種可能的解決方案。

這樣的事情應該有效。 你需要包含signal.h:

raise(SIGABRT);

在Linux上,我假設你正在使用gdb,你可以創建一個腳本來完成代碼中的注釋

#!/bin/bash
#debug: Script to run programs in gdb with comments to specify break 
points
echo "file ./a.out" > run
grep -nrIH "/\*GDB\*/" |
    sed "s/\(^[^:]\+:[^:]\+\):.*$/\1/g" |
    awk '{print "b" " " $1 }'|
    grep -v $(echo $0| sed "s/.*\///g") >> run
gdb --init-command ./run -ex=r
exit 0

然后只要你需要一個斷點,只需添加/*GDB*/ ,腳本將使用grep查找帶有這些注釋的行號和文件,並在它找到的每個文件的每一行上設置一個斷點,然后啟動gdb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM