使用 ex 命令从命令行添加断点时出现问题
Problems adding a breakpoint with commands from command line with ex command
我尝试从命令行使用 gdb 启动程序,然后立即使用命令添加断点,然后 运行:
gdb -q -ex 'set pagination off' -ex 'break XOpenDisplay' -ex 'commands' -ex 'silent' -ex 'info locals' -ex 'bt full' -ex 'cont' -ex 'end' -ex 'r' ./myprogram
程序在“命令”提示我通过键盘输入命令然后输入“结束”后卡住。
我是不是忘记了什么?
此致
更新:
我添加了一个.gdbinit,内容如下:
gdb -q -ex breakXOpenDisplayRun
define breakXOpenDisplayRun
set pagination off
break XOpenDisplay
commands
silent
info locals
bt full
cont
end
run
end
gdb -q -ex breakXOpenDisplayRun ./myapp
当程序第一次遇到断点时,它会停在那里提示用户输入,这是不应该发生的。在第一个 cont 之后它按预期工作。
-ex
需要一个完整的命令,如果是commands
,完整的命令是
commands
silent
info locals
bt full
cont
end
虽然您 可以 在 shell 提示符下输入 multi-line 命令,但这样做非常笨拙,您最好将所有将所需的命令放入一个临时命令文件中。这样的事情应该有效:
cat > /tmp/gdb.$$ <<"EOF" && gdb -x /tmp/gdb.$$ ./myprogram && rm -f /tmp/gdb.$$
set pagination off
break XOpenDisplay'
commands
silent
info locals
bt full
cont
end
run
EOF
感谢 gdb 邮件列表 Andrew Burgess。这是一个已在 gdb 11 中修复的错误。对于之前的版本,使用单独的源对我有用:
gdb -q -ex 'source breakXOpenDisplayRun.gdb' ./myapp
我尝试从命令行使用 gdb 启动程序,然后立即使用命令添加断点,然后 运行:
gdb -q -ex 'set pagination off' -ex 'break XOpenDisplay' -ex 'commands' -ex 'silent' -ex 'info locals' -ex 'bt full' -ex 'cont' -ex 'end' -ex 'r' ./myprogram
程序在“命令”提示我通过键盘输入命令然后输入“结束”后卡住。
我是不是忘记了什么?
此致
更新:
我添加了一个.gdbinit,内容如下:
gdb -q -ex breakXOpenDisplayRun
define breakXOpenDisplayRun
set pagination off
break XOpenDisplay
commands
silent
info locals
bt full
cont
end
run
end
gdb -q -ex breakXOpenDisplayRun ./myapp
当程序第一次遇到断点时,它会停在那里提示用户输入,这是不应该发生的。在第一个 cont 之后它按预期工作。
-ex
需要一个完整的命令,如果是commands
,完整的命令是
commands
silent
info locals
bt full
cont
end
虽然您 可以 在 shell 提示符下输入 multi-line 命令,但这样做非常笨拙,您最好将所有将所需的命令放入一个临时命令文件中。这样的事情应该有效:
cat > /tmp/gdb.$$ <<"EOF" && gdb -x /tmp/gdb.$$ ./myprogram && rm -f /tmp/gdb.$$
set pagination off
break XOpenDisplay'
commands
silent
info locals
bt full
cont
end
run
EOF
感谢 gdb 邮件列表 Andrew Burgess。这是一个已在 gdb 11 中修复的错误。对于之前的版本,使用单独的源对我有用:
gdb -q -ex 'source breakXOpenDisplayRun.gdb' ./myapp