如何打印完整的字符数组gdb
Posted
技术标签:
【中文标题】如何打印完整的字符数组gdb【英文标题】:How to print full char array gdb 【发布时间】:2021-12-31 20:04:44 【问题描述】:如何打印完整的aligned_depth.get_data()。它应该是一个字符数组:https://gist.github.com/richardrl/224eb53d4bc1cedda36f5bda1d78ca18#file-realsense_multicam-cpp-L390
这些是我尝试过的一些事情:
(gdb) print *aligned_depth.get_data()@depth_size
Attempt to dereference a generic pointer.
(gdb) print (char*) aligned_depth.get_data()@depth_size
Only values in memory can be extended with '@'.
(gdb) print (char*)aligned_depth.get_data()@depth_size
Only values in memory can be extended with '@'.
get_data 在这里:https://intelrealsense.github.io/librealsense/doxygen/clas-s-rs2_1_1frame.html#a4b373fc81617be881b691a97b0f8358c
【问题讨论】:
将get_data()
的结果赋值给一个变量,然后打印出来。
这可能对你有帮助:***.com/questions/29528732/…
【参考方案1】:
这应该可行:
(gdb) p *((char*)aligned_depth.get_data())@depth_size
鉴于此测试,至少它对我使用 GDB-10.0 有效:
const char p[] = "abcd\0efgh";
const int data_size = sizeof(p);
const void* get_data() return p;
int main() return 0;
gcc -g -w x.c && gdb -ex start -q ./a.out
Reading symbols from ./a.out...
Temporary breakpoint 1 at 0x113a: file x.c, line 5.
Starting program: /tmp/a.out
Temporary breakpoint 1, main () at x.c:5
5 int main() return 0;
(gdb) p *((char*)get_data())@data_size
$1 = "abcd\000efgh"
【讨论】:
以上是关于如何打印完整的字符数组gdb的主要内容,如果未能解决你的问题,请参考以下文章