2012-07-24 91 views
1

我正试图调试一个程序,该程序需要在命令行上添加几个参数。 里面的主我打印出来的参数如下:gdb只需要第一个参数

int main (int argc, char **argv) 
{ 
for (int i = 0; i < argc; i++) { 
    printf("param%d=%s\n", i, argv[i]); 
} 

,当我没有GDB运行我的程序,这样

"program img.jpg 1 2" 

我得到的输出:

param0: program 
param1: img.jpg 
param2: 1 
param3: 2 

当我像这样用gdb运行它:

"program img.jpg 1 2" 

我只有一方面img.jpg得到

param0: img.jpg 

应该是参数1,还参数2和3人失踪。 有没有一种特殊的方式来指定我缺少的gdb的命令行参数?

回答

4

您应该在运行程序时指定参数。

首先,你应该调用与

$ gdb <binary_file_name (executable)> 

调试器比你启动的程序还通过命令行参数:

(gdb) r p1 -p2 --p3 p4=p5 

附注:我觉得这个解决方案比使用更灵活--args标志,因为您可以使用不同参数多次启动程序,而不必退出当前的实例(例如,保留断点)。

+0

它的工作,非常thanks.I'll检查它作为正确的答案很快 – 2012-07-24 12:17:44

+1

你也可以在gdb中使用“set args”,然后调用“run”。 – Alan 2012-07-24 13:38:28

1

您现在将参数发送到gdb而不是program。为了将参数传递到program,您可以使用--args参数gdb

gdb --args program img.jpg 1 2 
1

可以使用--args选项告诉gdb来传递参数给程序正在调试:

> gdb --args program img.jpg 1 2 

或者,你可以启动gdb没有参数,然后将它们提供给run命令:

> gdb program 
(gdb) run img.jpg 1 2 
相关问题