用gdb调试基于参数的C程序 我有C++程序,我通过它传递字符串来运行。 g++ -o a main.cpp -lpthread
然后用用gdb调试基于参数的C程序 我有C++程序,我通过它传递字符串来运行。 g++ -o a main.cpp -lpthread,c++,c,gdb,C++,C,Gdb,然后用/a“Good nice” 但是我如何用gdb调试它呢? main.cpp从包含在其中的其他文件调用函数 gdb ./a "Good nice" 将“-”作为文件,并说没有这样的文件 我想逐行调试 使用gdb的--args选项: gdb --args ./a "Good nice" 还要将-g选项添加到编译器调用中,因为否则gdb将无法将可执行文件与源代码连接: g++ -g -o a main.cpp -lpthread gdb./prog->set argsstring->run
/a“Good nice”
但是我如何用gdb调试它呢?
main.cpp从包含在其中的其他文件调用函数
gdb ./a "Good nice"
将“-”作为文件,并说没有这样的文件
我想逐行调试 使用gdb的--args
选项:
gdb --args ./a "Good nice"
还要将-g
选项添加到编译器调用中,因为否则gdb将无法将可执行文件与源代码连接:
g++ -g -o a main.cpp -lpthread
gdb./prog->set args
string
->run 使用不带参数的gdb
gdb ./a
然后在gdb中,在运行程序之前
set args "Good nice"
你可以看到你设置的参数,使用的参数
show args
有关详细信息,请参阅。另一个选项是在运行
后提供参数
$gdb ./a
run "Good nice"
也可以使用-g
编译您的程序,否则这一切都是徒劳的他还必须使用-g
@aaronman编译是的,才能使用调试器。但是这个问题不是关于程序参数的问题吗?如果他向你展示了他是如何编译的,你知道这是错误的,而你不告诉他,你的答案有用吗?如果我们是这样的话,你还应该加上-Wall…;-)@拉兹洛帕普干杯:D,但我认为这真的会偏离主题。不过,我可以对你的评论投赞成票。附带说明:如果你对设置的参数有疑问,请准确使用show args
@kingsmasher1,在上面的过程之后,当我按s
开始逐行调试时,它会给出“程序未运行”的结果,您需要通过键入“run”来运行它。这将执行整个程序并给出输出。我要逐行调试!