我正在尝试分析c++,它使用pybind11生成一个.so文件。.so文件具有python,因此主python程序使用python并调用.so文件中的函数。我为python和c++ (gdb)使用了两个调试器。当我在gdb中设置断点时,会得到以下错误:
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文件
[build_ext]
debug = 1也许是我制作.so文件的方式出了问题?
发布于 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。
https://stackoverflow.com/questions/64138770
复制相似问题