gdb eval“%s”替换错误

时间:2018-02-13 20:41:08

标签: gdb

对标题感到抱歉我努力想出一些可以“描述”问题的东西。很抱歉,如果问题已被提出,但我找不到相关内容。

所以我试图使用带有 eval 函数的string类型的gdb方便变量。

首先,由于我刚开始使用gdb,我想确保我理解发生了什么,所以我尝试了以下

(gdb) eval "!echo 5"
5
(gdb) eval "!echo 5+8"
5+8
(gdb) eval "!echo %d", 5
5
(gdb) eval "!echo %d", 5+8
13
(gdb) set $anumber = 12
(gdb) eval "!echo %d", $anumber
12
到目前为止一切顺利。 然后我尝试了这个,我无法弄清楚为什么它在最后一行对我大喊大叫。

(gdb) eval "!echo hello"
hello
(gdb) eval "!echo \"hello\""
hello
(gdb) eval "!echo 'hello'"
hello
(gdb) set $hellostr = "hello"
(gdb) eval "!echo %s", $hellostr
You can't do that without a process to debug.

我有什么遗失的吗?

如果这可能会有所帮助,请调用 show version 生成

GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1

1 个答案:

答案 0 :(得分:0)

这只是gdb中的a bug。目前gdb总是尝试在下级中分配字符串。但是,这并非总是真的有必要。