使用gdb進行程序調試時,如何將標準輸入傳給可執行程序?
假設數據在input.txt當中, 可執行文件名爲myprogram。
$ cat input.txt
this is a test.
$ gdb myprogram // 啓動調試
(gdb) break // 設置斷點
run arg1 arg2 ... < input.txt // 傳入參數,以及輸入數據
n or s //單步調試,n不進入函數,s進入函數
p variable_name //打印變量值
c // 執行至下一斷點
使用gdb進行程序調試時,爲何變量顯示<value optimized out>?
這是因爲在編譯程序時,設置了-O1, -O2, -O3,應該改爲-O0,則變量值可以正常顯示。
如果使用cmake來自動生成Makefile,如何加入調試信息?
設置選項-DCMAKE_BUILD_TYPE=Debug
gdb斷點設置?
1. break file_path/file_name:line_number
2. break file_path/file_name: function_name