【发布时间】:2015-04-12 12:06:28
【问题描述】:
我正在检查核心转储,并且需要在仅知道函数类型的情况下打印函数参数值(无参数名称符号):
(gdb) frame 7
#7 0x00007f201a269e82 in f1(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned char*, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*) () from /usr/lib64/libsome.so
(gdb) info args
No symbol table info available.
(gdb) info f
Stack level 7, frame at 0x7f200ebf9e50:
rip = 0x7f201a269e82
in f1(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned char*, int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >*); saved rip 0x7f201b430905
called by frame at 0x7f200ebfa1c0, caller of frame at 0x7f200ebf9e00
Arglist at 0x7f200ebf9df8, args:
Locals at 0x7f200ebf9df8, Previous frame's sp is 0x7f200ebf9e50
Saved registers:
rbx at 0x7f200ebf9e28, rbp at 0x7f200ebf9e30, r12 at 0x7f200ebf9e38, r13 at 0x7f200ebf9e40, rip at 0x7f200ebf9e48
具体来说,我需要知道第一个参数 (std::string) 和最后一个参数 (std::string*) 中的内容。 这个框架中的 arglist 和 locals 都指向同一个地址...
【问题讨论】:
-
尝试解散这个函数。也许你会得到一些关于函数参数的信息。