无法在共享对象库中插入断点 x,(python 使用来自 C++ 的 .so 库)
cannot insert breakpoint x in shared object library , (python using .so library from c++)
我正在尝试分析使用 pybind11 制作成 .so 文件的 c++。
.so 文件有 python API 因此主 python 程序使用 python API 并调用 .so 文件中的函数。我为 python (pdb) 和 c++ (gdb) 使用了两个调试器。
当我在 gdb 中设置断点时,出现此错误:
Cannot insert breakpoint 1.
Cannot access memory at address 0xb41798
当我在 c++ 中设置断点时,没有任何抱怨,但是当程序在 python 中恢复时,我在 c++ 调试 window 中出现此错误消息。我该如何解决这个问题?
添加:这是我 运行 调试器的方式。
对于 pdb:python3 -m pdb test.py
对于 gdb:ddd /usr/loca/.../dlib...gnu.so 10498
其中 10498 是 python 程序的进程 ID
我制作了 .so 文件(dlib c++ 到包含 python API 的 .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 文件的方式有问题?
for gdb : ddd /usr/loca/.../dlib...gnu.so 10498
您的 DDD 调用不正确:进程 10498
是 而不是 运行 您的 dlib...gnu.so
二进制文件,它是 运行 python3
加载了 .so
的二进制文件。
您需要像这样调用它:ddd python3 10498
.
我正在尝试分析使用 pybind11 制作成 .so 文件的 c++。 .so 文件有 python API 因此主 python 程序使用 python API 并调用 .so 文件中的函数。我为 python (pdb) 和 c++ (gdb) 使用了两个调试器。 当我在 gdb 中设置断点时,出现此错误:
Cannot insert breakpoint 1.
Cannot access memory at address 0xb41798
当我在 c++ 中设置断点时,没有任何抱怨,但是当程序在 python 中恢复时,我在 c++ 调试 window 中出现此错误消息。我该如何解决这个问题?
添加:这是我 运行 调试器的方式。
对于 pdb:python3 -m pdb test.py
对于 gdb:ddd /usr/loca/.../dlib...gnu.so 10498
其中 10498 是 python 程序的进程 ID
我制作了 .so 文件(dlib c++ 到包含 python API 的 .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 文件的方式有问题?
for gdb :
ddd /usr/loca/.../dlib...gnu.so 10498
您的 DDD 调用不正确:进程 10498
是 而不是 运行 您的 dlib...gnu.so
二进制文件,它是 运行 python3
加载了 .so
的二进制文件。
您需要像这样调用它:ddd python3 10498
.