C 远程调试的调试技术

C 远程调试的调试技术,c,debugging,C,Debugging,使用以下调试标志编译-ggdb 我正在寻找一种在远程服务器上调试的方法 目前我正在使用gdb进行调试 但是,我想打印结构的内容,以查看元素被分配了哪些值 我可以这样做: gcc (GCC) 4.1.2 c89 Red Hat Enterprise Linux Server release 5.4 2.6.18-164.el5 GNU gdb Fedora (6.8-37.el5) 然而,这只是给我结构的内存地址 是否有任何地方可以打印结构的元素 非常感谢你的建议 ======编辑=====

使用以下调试标志编译
-ggdb

我正在寻找一种在远程服务器上调试的方法

目前我正在使用gdb进行调试

但是,我想打印结构的内容,以查看元素被分配了哪些值

我可以这样做:

gcc (GCC) 4.1.2 
c89
Red Hat Enterprise Linux Server release 5.4 
2.6.18-164.el5
GNU gdb Fedora (6.8-37.el5)
然而,这只是给我结构的内存地址

是否有任何地方可以打印结构的元素

非常感谢你的建议

======编辑======

p media_description
$2 = (sdp_media_description_t *) 0xb7a80318

上述代码应返回指向结构实例的指针。

由于
media\u description
显然是一个指针,因此您需要打印它指向的结构:

sdp_media_description_t *media_description = NULL;        
media_description = get_item(sdp_media_des_list, outer);

也许您有一个指向结构而不是结构的指针

如果是这样的话,您可以在打印指针时取消对指针的引用,即

p*媒体描述


另外,如果您不想在控制台模式下使用gdb,并且希望有一个图形化前端,那么您应该能够通过在被调试的机器上运行gdbserver和在gui驱动的开发机器上运行gdb来远程使用它,或者在被测机器上运行所有程序,并使用X window系统的远程功能在您坐在前面的机器上显示它。当我这样做的时候,我得到了以下不完整的类型:(gdb)p*media_description$13=请发布定义和实例化结构的代码。您仍然没有提供结构的定义,只引用了您文章中没有的其他内容(可能隐藏在某个头文件中)。这是不是应该是不透明的,这样你就不应该检查它的内容了?我必须回顾一下。我认为是什么让它变得困难,因为我为C++头和实现创建了包装器。因此,结构是类的表示。
p *media_description