2013-08-17 18 views
5

我有C++程序,我通過它傳遞字符串運行。調試參數基於C程序與gdb

g++ -o a main.cpp -lpthread 

./a "Good nice"

執行它,但我如何使用gdb調試呢? main.cpp從包含在其中的其他文件調用函數。

gdb ./a "Good nice" 

以「 - 」作爲文件並且說沒有這樣的文件!

我想逐行調試!

+0

可能重複的[將參數傳遞給程序通過GDB運行](http://stackoverflow.com/questions/4521015/passing-arguments-to-program- run-through-gdb) – Mark

+0

也用'-g'來編譯你的程序,否則這全是空的 – aaronman

回答

6

用GDB的--args選項:

gdb --args ./a "Good nice" 

還要添加-g選項,你的編譯器的呼叫,否則GDB將無法可執行文件與源代碼連接:

g++ -g -o a main.cpp -lpthread 
+0

他也必須用'-g'編譯 – aaronman

+0

@aaronman是的,爲了能夠使用調試器。但是,這不是關於程序參數問題的這個問題嗎? – cmaster

+0

如果他告訴你他是如何編譯它的,你知道這是錯的,你不告訴他,你的答案有用嗎? – aaronman

3

GDB ./prog - >集ARGSstring - >運行

+0

這將執行整個程序並給出輸出。我需要逐行調試! – user123

5

使用gdb的,但沒有參數

gdb ./a 

然後在gdb,運行程序

set args "Good nice" 

您可以看到您所設置的參數,使用

show args 

here的前詳情。

+0

備註:如果你在中間有疑問你設置了什麼參數,使用'show args' – kingsmasher1

+0

@ kingsmasher1準確地說,我將它加入到答案中。 –

+0

上面的過程當我按's'逐行開始調試時,它給出'程序沒有運行' – user123

3

花葯的選擇是提供參數後的run

$gdb ./a 
run "Good nice" 
+0

這直接顯示最終的輸出,沒有逐行調試! – user123