在 perl 中调试 SWIG 包装的共享库
我在 Perl 中使用 SWIG 封装了我的 C/C++ 代码。由于包装的代码,我几乎没有分段错误。我正在尝试将 ddd
与 Perl 脚本一起使用,但不幸的是,即使我在脚本的一行(调用 C/C++ 代码的行)上设置断点,ddd
也是无法深入到 C/C++ 代码。
当我调试 Perl 代码时,有什么方法可以在我的 C lib 中设置断点,或者您知道当我运行此 Perl 脚本时调试 C lib 的好方法/工具吗?
我正在使用 Linux/gcc。
I have wrapped my C/C++ code using SWIG in Perl. I have few segmentation fault because of the wrapped code. I am trying to use ddd
with the Perl script but unfortunately even if I set a breakpoint on a line of the script ( the one calling C/C++ code ), ddd
is not able to step in down to the C/C++ code.
Is there any way to set breakpoint into my C lib when I am debugging Perl code or do you know a good way/tool to debug the C lib when I am running this Perl script?
I am using Linux/gcc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我做了一件简单的事。我直接在
perl
解释器上调用gdb
。似乎一旦 scipt 运行,共享内存也会加载到内存中。一旦发生这种情况,我就可以使用所有信息、函数和断点进行调试。
I did a simple thing. I called the
gdb
directly onperl
interpreter.It seems that once the scipt is running shared memory is also loaded in memory. Once this happened I have available all information, functions and breakpoint for debugging.
我只使用 SWIG 从 TCL 调用 C++,并使用 Visual Studio 对其进行调试,但相同的想法也应该适用于您的情况。我将描述我所做的调试工作,希望您能弄清楚如何将其应用到您的情况。
load
命令中的路径指向模块的调试版本)tclsh85.exe MyScript.tcl
HTH
I've only used SWIG for calling C++ from TCL, and debugged it using Visual Studio, but the same ideas should apply for your case as well. I'll describe what I've done to debug, hopefully you can figure out how to apply it to your situation.
load
command points to the debug version of the module)tclsh85.exe MyScript.tcl
HTH