Expanding a GDB variable for use in a loop (with dprintf)? -
i trace execution of function, printing out each line has executed - in gdb
, use dprintf
this. since it's big function (from line 113 line 200 in myfile.cpp), came following loop set dprintf
type breakpoints on each line of function:
set $n=113 while ($n<200) dprintf myfile.cpp:$n, " myfile:testf %d\n", $n set $n=$n+1 end
this works, when comes setting dprintf
style breakpoints:
(gdb) info br num type disp enb address 1 dprintf keep y 0x080a7272 in namespace::myfile::testfunc(int&) @ /path/to/myfile.cpp:113 printf " myfile:testf %d\n", $n 2 dprintf keep y 0x080a727d in namespace::myfile::testfunc(int&) @ /path/to/myfile.cpp:114 printf " myfile:testf %d\n", $n ...
... however, if doesn't work respective dprintf
format string, gdb
variable $n
not expanded number string, wanted.
so there way expand $n
variable, such dprintf
s end like: printf " myfile:testf %d\n", 113
, printf " myfile:testf %d\n", 114
, , on?
well, turns out there's eval
function (https://unix.stackexchange.com/questions/151502/how-to-save-the-result-of-printf-to-a-variable-in-gdb) helps - loop should re-written this:
set $n=113 while ($n<200) eval "dprintf myfile.cpp:%d, \" myfile:testf %d\"", $n, $n set $n=$n+1 end
running in gdb
produce dprintf
breakpoints like:
1 dprintf keep y 0x080a7272 in namespace::myfile::testfunc(int&) @ /path/to/myfile.cpp:113 printf " myfile:testf 113"
... , on, - guess - needed...
Comments
Post a Comment