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

标签 python c++ debugging gdb pdb

我正在尝试分析使用 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++ 调试窗口中有此错误消息。我怎么解决这个问题?
添加:这是我运行调试器的方式。
对于 pdb:python3 -m pdb test.py对于 gdb:ddd /usr/loca/.../dlib...gnu.so 10498其中 10498 是 python 程序的进程 ID
我制作了这样的 .so 文件(dlib c++ 到 .so 包含 python API 的文件):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 .

关于python - 无法在共享对象库中插入断点 x,(python 使用来自 c++ 的 .so 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64138770/

相关文章:

c++ - 结构或 union 中的 'unsigned temp:3' 是什么意思?

c++ - Windbg:如何在 C++ 函数的重载之一上设置断点?

bash - 我无法使该脚本用于包含空格的文件夹,我该如何解决?

javascript - Chrome 调试器 : Is it possible to halt the script in the debugger every time a Nan or Infinity is computed?

Python连载,能写不能读

python - 在 sqlalchemy 中查询 Enum 列导致 LookupError

c++ - 将模板化回调函数传递给另一个模板化函数

c++ - 带有 "%0*d"的 snprintf,参数太少

python - 在 Python 中检查字符串中的数字

python - 没有名为 ConfigParser 的模块