8

我在 Perl 中使用 SWIG 包装了我的 C/C++ 代码。由于包装的代码,我几乎没有分段错误。我正在尝试使用dddPerl 脚本,但不幸的是,即使我在脚本的一行(调用 C/C++ 代码的那个)上设置了一个断点,ddd也无法进入 C/C++ 代码。

当我调试 Perl 代码时,有什么方法可以在我的 C lib 中设置断点,或者你知道在我运行这个 Perl 脚本时调试 C lib 的好方法/工具吗?

我正在使用 Linux/gcc。

4

2 回答 2

7

我做了一件简单的事。gdb我直接打电话给perl翻译。

    gdb /usr/bin/perl
    (gdb) r myscript
    #block the script someway or rerun it
    (gdb) b whatever_my_function

似乎一旦 scipt 运行共享内存也会加载到内存中。一旦发生这种情况,我就可以使用所有信息、函数和断点进行调试。

于 2011-07-13T15:52:49.670 回答
0

我只使用 SWIG 从 TCL 调用 C++,并使用 Visual Studio 对其进行了调试,但同样的想法也应该适用于您的案例。我将描述我为调试所做的工作,希望您能弄清楚如何将其应用于您的情况。

  • 构建 C++ 模块的调试版本
  • 确保 TCL 脚本包含调试版本(TCLload命令中的路径指向模块的调试版本)
  • 在 C++ 代码中放置断点
  • 通过Visual Studio调试器调用TCL脚本;例如使用的命令是tclsh85.exe MyScript.tcl

高温高压

于 2011-07-13T15:38:05.887 回答