是否可以在用户定义的命令期间禁用 GDB 的输出?我有以下命令:
define stepi_to
if $argc != 1
printf "usage: stepi_to <address>\n"
else
while $pc != $arg0
stepi
end
end
end
Run Code Online (Sandbox Code Playgroud)
以下是该命令的示例:
(gdb) stepi
0xef000004 in ?? ()
(gdb) stepi_to 0xef000014
0xef000008 in ?? ()
0xef00000c in ?? ()
0xef000010 in ?? ()
0xef000014 in ?? ()
Run Code Online (Sandbox Code Playgroud)
我对输出“in ?? ()”不感兴趣。
我尝试通过“设置日志重定向”来重定向输出,但这不起作用。
硬件断点(有缺陷)和 Python 脚本不是一个选项,因为它是一个带有旧 GDB 的嵌入式系统(blackfin)。
我在Blackfin 533处理器上运行的一些代码中遇到了这个bug.
第一次Func()运行时,fooStruct将包含垃圾,但在下一次迭代中,getFoo()偶然返回的旧值仍然存在fooStruct.foo.
FooStruct
{
double foo;
double bar;
};
void Func()
{
FooStruct fooStruct;
double bar = 123.4 / fooStruct.foo;
fooStruct.foo = getFoo();
fooStruct.bar = bar;
}
Run Code Online (Sandbox Code Playgroud)
这意味着第一次运行时,我们正在读取未初始化的变量,这是未定义的行为.以下迭代怎么样?这仍然是未定义的行为吗?在嵌入式处理器上读取未初始化的变量时,我们可以期待看到什么样的行为?