例如
檔案 test.c:
#include <stdio.h> int main(){ int x; scanf("%d", &x); printf("%d", x); return 0; }編譯:
$ gcc test.c -o test
執行(使用 redirection):
$ ./test < input.txt # integer 5 in input.txt $ 5 # program output
那 GDB 要怎麼使用呢?
直接上完整 debug 流程範例
1. 發現問題
2. 執行 gdb,開啟檔案
$ gdb >>> file myparser.exe3. 設定 main 為中斷點
>>> break main4. 執行讓程式停在中斷點
>>> run5. 開啟要透過 redirection 輸入的檔案
>>> call dup2(open("input/declaration.go", 0), 0)6. 繼續執行
>>> continue7. 發現錯誤行數
8. 利用 print 指令查看,發現原因是 header 變數沒有正確初始化
參考資料:
gdb input redirection using cygwin
沒有留言:
張貼留言