【问题标题】:Writing NSPrintForDebugger in GDB to print objects in C在 GDB 中编写 NSPrintForDebugger 以在 C 中打印对象
【发布时间】:2012-08-19 18:36:49
【问题描述】:

在使用 GDB(在 Gentoo Linux 上使用文本接口、TTY 和 SSH)调试 C 代码时,我想打印对象中的数据。当我尝试使用print-object <objectname> 时,我收到了消息

评估这个表达式需要程序有一个函数“_NSPrintForDebugger”

我找不到任何关于如何创建这样一个函数的文档或示例(是我,还是 Linux 文档中的示例非常少?)。 我想要一个我可以为 gdb 建模的 NSPrintForDebugger 函数示例。 请注意,我是 C、Linux、MPI、emacs 和 gdb 的新手。

为了让这更难一点,我找不到我要打印的所有对象的定义。

如果有助于举例,我想print-object 的一些对象是:

  1. 用户数据

    typedef 结构 { realtype dx, hdcoef, hacoef; int npes, my_pe MPI_Comm 通信; 实型 z[100]; } *用户数据; 用户数据;

  2. N_Vector(SUNDIALS 的一部分,可能有varying definitions)。

  3. void *cvode_mem(任何指向 void 的指针)
  4. realtype(大小不一的花车,也是 SUNDIALS 的一部分)
  5. MPI_Comm(可能只是一个整数)

附:我注意到,例如,p *data 显示了很多信息。但我想要更多。

【问题讨论】:

    标签: c debugging gdb


    【解决方案1】:

    GDB print-object 命令正在调用的NSPrintForDebugger 函数是Objective-C 运行时的一部分。由于您没有使用 Objective-C,请忽略它。

    【讨论】:

    • 那我如何打印一个对象?
    • 您已经在做的事情 (p *data) 是在不编写大量自定义函数和/或 GDB 宏的情况下获得的最佳效果。
    • 你知道,我花了几个小时来形成这个问题,以确保我有相关的信息,并清楚地询问并一遍又一遍地搜索,以确保我没有错过任何重要的网。你在一小时零一句话内回答了它。 (我有很多问题!)。 :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2017-05-19
    • 1970-01-01
    • 2017-07-10
    相关资源
    最近更新 更多