GNU 调试器不显示 C++ 中的所有数据;结构
我一直将 WinPcap 库与 C++、Codelite 和 GNU 开发工具一起使用。我有一个描述 IP 标头的 IP4 结构。当我将数据包数据转换为结构时,我无法在调试器中看到所有数据,只能看到随机的数据位。例如,IP4 结构中的源地址和目标地址不会显示在调试器中,但当我运行 printf
语句时,它们显示得非常好。调试器为什么要这样做?结构体中的数据类型重要吗?我发现 printf
结构来确保数据有效很麻烦。 MinGW-4.4.1 和 GNU gdb (GDB) 7.1
I have been using the WinPcap library with C++, Codelite and GNU development tools. I have an IP4 structure describing an IP header. When I cast the packet data into the structure, I can't see all of it in the debugger, just random bits of data. For example, the source and destination addresses in the IP4 struct don't show up in the debugger, but when I run printf
statements they show up perfectly fine. Why is the debugger doing this? Does the data type in the struct matter? I find it a hassle to printf
the structs to make sure that the data is valid. MinGW-4.4.1 and GNU gdb (GDB) 7.1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
也许,您应该使用 -gstabs+ gcc 选项重新编译 winpcap 库。这将允许您在调试器中查看库。此选项添加了只有 gdb 可以理解的调试符号(其他调试器会崩溃),但提供了查看代码的最全面的方法。
Probably, you should recompile the winpcap library with -gstabs+ gcc option. That will allow you to view the library in the debugger. This option adds debug symbols that are understood only by gdb (and other debuggers will crash), but provides the most comprehensive way to view the code.
调试器关心数据结构的类型。仅当使用正确的数据类型时,您才会在调试器中看到完整的数据。
The debugger cares about the type of the data structure. You will see the full data in the debugger only if you use the correct data type.