展开GDB变量以在循环中使用(使用dprintf)?
我想通过打印出函数执行的每一行来跟踪函数的执行情况-在展开GDB变量以在循环中使用(使用dprintf)?,gdb,Gdb,我想通过打印出函数执行的每一行来跟踪函数的执行情况-在gdb中,我可以使用dprintf。由于它是一个大函数(从myFile.cpp中的第113行到第200行),因此我提出了以下循环,在函数的每一行上设置dprintf类型断点: set $n=113 while ($n<200) dprintf myFile.cpp:$n, " myFile:testF %d\n", $n set $n=$n+1 end 。。。但是,if不适用于相应的dprintf格式字符串,因为gdb变量$n没有扩展
gdb
中,我可以使用dprintf
。由于它是一个大函数(从myFile.cpp中的第113行到第200行),因此我提出了以下循环,在函数的每一行上设置dprintf
类型断点:
set $n=113
while ($n<200)
dprintf myFile.cpp:$n, " myFile:testF %d\n", $n
set $n=$n+1
end
。。。但是,if不适用于相应的dprintf
格式字符串,因为gdb
变量$n
没有扩展为数字字符串,这正是我想要的
那么是否有任何方法可以扩展
$n
变量,使得dprintf
的结尾类似于:printf“myFile:testF%d\n”、113
、printf“myFile:testF%d\n”、114
,等等?事实证明,有一个eval
函数()可以帮助实现这一点-循环应该这样重新编写:
set $n=113
while ($n<200)
eval "dprintf myFile.cpp:%d, \" myFile:testF %d\"", $n, $n
set $n=$n+1
end
。。。等等,我想这就是我所需要的
set $n=113
while ($n<200)
eval "dprintf myFile.cpp:%d, \" myFile:testF %d\"", $n, $n
set $n=$n+1
end
1 dprintf keep y 0x080a7272 in namespace::myFile::testFunc(int&)
at /path/to/myFile.cpp:113
printf " myFile:testF 113"