C++ 在perl中调试SWIG包装的共享库
我已经在Perl中使用SWIG包装了我的C/C++代码。由于代码的包装,我几乎没有分段错误。我试图在Perl脚本中使用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调试它,但是同样的想法也应该适用于您
ddd
,但不幸的是,即使我在脚本的某一行(调用C/C++代码的那一行)上设置了断点,ddd
也无法进入C/C++代码
当我调试Perl代码时,有没有办法在我的C库中设置断点?或者当我运行这个Perl脚本时,您知道调试C库的好方法/工具吗
我使用Linux /gcc.< /p> ,我只使用了SWIG从TCL调用C++,并使用VisualStudio调试它,但是同样的想法也应该适用于您的情况。我将描述我在调试中所做的工作,希望您能够找出如何将其应用于您的情况
-
< LI>构建C++模块的调试版本
- 确保TCL脚本包含调试版本(TCL
命令中的路径指向模块的调试版本)load
- 通过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脚本中设置的。