107.06.18 cygwin gdb redirection

redirection 就是透過 <、> 來操作資料流
例如
檔案 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.exe
3. 設定 main 為中斷點
>>> break main
4. 執行讓程式停在中斷點
>>> run
5. 開啟要透過 redirection 輸入的檔案
>>> call dup2(open("input/declaration.go", 0), 0)
6. 繼續執行
>>> continue
7. 發現錯誤行數
8. 利用 print 指令查看,發現原因是 header 變數沒有正確初始化



參考資料:
gdb input redirection using cygwin

沒有留言:

張貼留言

^ Top