首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在共享对象库中插入断点x,(python使用来自.so的c++库)

无法在共享对象库中插入断点x,(python使用来自.so的c++库)
EN

Stack Overflow用户
提问于 2020-09-30 13:35:47
回答 1查看 107关注 0票数 1

我正在尝试分析c++,它使用pybind11生成一个.so文件。.so文件具有python,因此主python程序使用python并调用.so文件中的函数。我为python和c++ (gdb)使用了两个调试器。当我在gdb中设置断点时,会得到以下错误:

代码语言:javascript
复制
Cannot insert breakpoint 1.
Cannot access memory at address 0xb41798

当我在c++中设置断点时,没有任何抱怨,但是当程序在python中恢复时,我在c++调试窗口中有这个错误消息。我该如何解决这个问题?

添加:以下是我如何运行调试器。

对于pdb:python3 -m pdb test.py for gdb:ddd /usr/loca/.../dlib...gnu.so 10498,其中10498是python程序的进程id。

我使.so文件(dlib c++到包含python的.so文件)如下所示:

sudo python3 setup.py install --clean --set USE_AVX_INSTRUCTIONS=1 --set DLIB_USE_CUDA=1 --set CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" --compiler-flags "-O0 -g"

setup.cfg文件

代码语言:javascript
复制
[build_ext]  
debug = 1

也许是我制作.so文件的方式出了问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-30 14:46:23

for gdb:ddd /usr/loca/.../dlib...gnu.so 10498

您的DDD调用是不正确的:进程10498没有运行您的dlib...gnu.so二进制文件,而是运行python3二进制文件,并将.so加载到其中。

您需要像这样调用它:ddd python3 10498

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64138770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档