7

如何使用 GDB 在 C 级调试 python 脚本。给我一个简单的例子。我的主要目标是获取从我的 python 脚本调用的 libc 函数的跟踪。

4

2 回答 2

4

看到事情是二进制(.so)文件,你肯定不能将断点应用于特定的行,但你肯定可以将断点应用于函数。说使用

(gdb) b func_name

您可以轻松地将断点应用于函数,从而在找到断点时获取回溯。首先运行你的 python sc

  1. 启动 gdb:

    gdb -ex r --args python demo.py
    
  2. 应用断点:

    (gdb) b func_name
    
  3. 跑:

    (gdb) run
    

这应该适用于您的情况。

于 2018-07-27T11:28:35.180 回答
1

您始终可以使用 gdb 使用 Python 并根据需要设置断点

gdb -ex r --args python script.py args

如果您想在运行 Python 脚本时查看 Python 中发生了什么,我建议使用混合模式

gdb -ex r --args python -m pdb script.py

这样,您可以进入 pdb,然后按下Ctrl-C并最终进入 gdb。然后,bt将在 Python 中为您提供堆栈跟踪。

于 2018-07-27T08:07:03.970 回答