【问题标题】:Debug argument based C program with gdb使用 gdb 调试基于参数的 C 程序
【发布时间】:2013-08-17 07:46:59
【问题描述】:

我有 c++ 程序,我通过传递字符串来运行它。

g++ -o a main.cpp -lpthread

并使用./a "Good nice" 执行它

但是我如何用 gdb 调试它呢? main.cpp 从其中包含的其他文件调用函数。

gdb ./a "Good nice"

将“--”作为文件并表示没有这样的文件!

我要逐行调试!

【问题讨论】:

标签: c++ c gdb


【解决方案1】:

使用 gdb 的--args 选项:

gdb --args ./a "Good nice"

还要在编译器调用中添加 -g 选项,否则 gdb 将无法将您的可执行文件与源代码连接起来:

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

【讨论】:

  • 他还得用-g编译
  • @aaronman 是的,完全可以使用调试器。但是这个问题不就是关于程序参数的问题吗?
  • 如果他向你展示了他是如何编译的,而你知道这是错误的而你没有告诉他,你的回答有用吗?
  • 如果我们这样做,你还应该添加 -Wall... ;-)
  • @LaszloPapp 干杯:D 但我认为这真的会开始偏离主题。不过,我可以支持你的评论。
【解决方案2】:

使用不带参数的 gdb

gdb ./a

然后在gdb中,在运行程序之前

set args "Good nice"

你可以看到你设置了什么参数,使用

show args

详情请见here

【讨论】:

  • 附注:如果您对设置的参数有疑问,请使用show args
  • @kingsmasher1 没错,我将其添加到答案中。
  • 在上述过程之后,当我按s 开始逐行调试时,它给出了`程序没有运行`
  • 你需要输入'run'来运行它。
【解决方案3】:

gdb ./prog -> 设置参数 string -> 运行

【讨论】:

  • 这将执行整个程序并给出输出。我要逐行调试!
【解决方案4】:

花药选择是在run之后提供参数

$gdb ./a
 run "Good nice"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2017-06-23
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2012-08-11
    相关资源
    最近更新 更多