簡體   English   中英

阻止GDB單步執行glibc函數

[英]Stop GDB from stepping through glibc functions

抱歉,標題不完整,沒想到有什么更好的了。

當我通過GDB運行程序以查找Segmentation Fault時,我得到了成千上萬行這樣的垃圾:

(gdb) step
_IO_new_file_xsputn (f=0x76fa0b40 <_IO_2_1_stdout_>, data=0x7efff284, n=7) at fileops.c
1279    fileops.c: No such file or directory.
(gdb) step
1273    in fileops.c
(gdb) step
1279    in fileops.c
(gdb) step
1286    in fileops.c
(gdb) step
1288    in fileops.c
(gdb) step
1289    in fileops.c
(gdb) step
1292    in fileops.c
(gdb) step
1294    in fileops.c
(gdb) step
1292    in fileops.c

...並且不斷地。 這使調試非常困難且乏味,因為:

  • 我必須重復輸入 step (或按Enter )。
  • 我什至幾乎看不到我程序的輸出,因為它隱藏在毫無意義的信息中。
  • 如果我反復按Enter鍵 ,我通常會錯過尋找的Seg Fault。

我怎樣才能告訴gdb退出打印這樣的行?

1273     in fileops.c

我可以使用一些配置文件或命令行選項嗎?

我怎樣才能告訴gdb退出打印這樣的行?

通過使用step命令,您要求 GDB准確打印此信息。

如果你不希望這樣的信息,你應該停止自討苦吃

我經常想念我正在尋找的Seg Fault。

如果只run ,當您獲得SIGSEGV時,GDB會自動停止,您不能錯過它。

可能想要的是在SIGSEGV之前的某個時間停止代碼,然后從那里開始。 有幾種技術可以實現此目的, 反向調試就是其中之一。 使用重播調試是另一種方法。

很難提供更多建議,因為您沒有顯示自己實際上在嘗試做什么。

您確定需要逐步檢查fileops.c glibc代碼嗎?

如果只想調試自己的代碼,則應在進入並繼續調試代碼后finish當前幀以退出_IO_new_file_xsputn函數。

這是如何step的工作-它步驟通過代碼。

斷點呢? 如果您設置一個,調試器將在那里停止,並讓您手動單步執行代碼。

對於諸如分段錯誤或類似信號之類的東西,它們會中止執行,您可以在程序停止時runbacktrace以獲取有關位置執行已停止的信息。 然后在此處設置一個斷點,程序將在有問題的指令處停止。

暫無
暫無

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

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