C++ 在perl中调试SWIG包装的共享库

C++ 在perl中调试SWIG包装的共享库,c++,perl,gdb,swig,script-debugging,C++,Perl,Gdb,Swig,Script Debugging,我已经在Perl中使用SWIG包装了我的C/C++代码。由于代码的包装,我几乎没有分段错误。我试图在Perl脚本中使用ddd,但不幸的是,即使我在脚本的某一行(调用C/C++代码的那一行)上设置了断点,ddd也无法进入C/C++代码 当我调试Perl代码时,有没有办法在我的C库中设置断点?或者当我运行这个Perl脚本时,您知道调试C库的好方法/工具吗 我使用Linux /gcc.< /p> ,我只使用了SWIG从TCL调用C++,并使用VisualStudio调试它,但是同样的想法也应该适用于您

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

当我调试Perl代码时,有没有办法在我的C库中设置断点?或者当我运行这个Perl脚本时,您知道调试C库的好方法/工具吗


我使用Linux /gcc.< /p> ,我只使用了SWIG从TCL调用C++,并使用VisualStudio调试它,但是同样的想法也应该适用于您的情况。我将描述我在调试中所做的工作,希望您能够找出如何将其应用于您的情况

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

我做了一件简单的事。我直接在
perl
解释器上调用了
gdb

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

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

如果我使用Komodo?Hi rpg,我如何调试它。我不知道。我看了一下,Komodo似乎是一个专门调试PERL脚本的IDE。我不知道当Perl调用共享库时,它是否能够调试C/C++指令。对于GDB,PERL解释器的起点是二进制。断点是在一行C/C++代码中设置的,而不是在一行Perl脚本中设置的。