【问题标题】:Is there a C equivalent to Perls' Dumper() method in Data::Dumper?Data::Dumper 中是否有与 Perls 的 Dumper() 方法等效的 C 语言?
【发布时间】:2009-07-08 14:09:46
【问题描述】:

基本上,我正在寻找的是一个可以让我做这样的事情的函数:

自卸车(some_obj); /* 输出 some_objs 的数据结构 */

谢谢。

【问题讨论】:

    标签: c windows object debugging


    【解决方案1】:

    C 不支持任何开箱即用的反射。从某种意义上说,它也不是硬类型的,一旦它被编译成机器代码,类型就不再存在了(与某些更高级别的语言不同)。您需要使用所有符号和调试信息构建可执行文件,然后使用一些调试工具或库来检索这些数据。

    我想只使用诸如 Visual Studio 调试器或 gdb 之类的已建立的调试器会简单得多。

    【讨论】:

    • 非常感谢您的解释。我想我会试一试 Visual Studio 调试器,因为我对 gdb 不太熟悉 - 尝试过早一点用它调试代码,尽管没有成功。
    【解决方案2】:

    简短回答:不。

    长答案:当您的程序被编译和链接时,所有这些信息都已被丢弃。 C(和 C++)没有反射,所以这些信息都不能在运行时恢复。

    有趣的答案:由于您使用的是 Windows,因此您可以使用调试信息(即 PDB 文件)和 DbgHelp API 执行各种操作。

    【讨论】:

    • 感谢罗杰的澄清。我实际使用的代码是 RIPE WHOIS 服务器的修改版本,虽然我使用的是 Windows,但我的大部分工作实际上都是在 Linux 中完成的(通过 SSH)。也许我会尝试在本地构建源代码,看看是否可以在 Visual Studio Express 中以调试模式运行。
    猜你喜欢
    • 2012-09-14
    • 2011-02-02
    • 1970-01-01
    • 2012-06-06
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多