调试 c 扩展时从 gdb 中的 pdb 进行单步调试

het*_*fan 5 c python swig python-extensions

我正在为 python 开发 C(++) 扩展。我有一个 C 语言库,我使用 Swig 包装它。不幸的是,我想调试 C 扩展中的一些错误。我的程序大量使用通过串行连接发送的 MsgBuffer 类。所有消息可能包含多个部分。如果我将 MsgPart 添加到 MsgBuffer,那么 msg 应该复制消息,但目前看起来我正在添加引用,因为一旦我修改了该部分,添加修改后的部分,初始部分看起来就像这样也被修改。

所以我想做的是在我的 python 程序中设置一个断点并单步执行调试器。

pin = 12  # Pin 12 on Teensy3.2
pullup = False  # No need for enabling pull up resistor.
msg = MsgBuffer(TEENSY_REQ_INPUT_PIN)
part= MsgPart()
part.write_uint32(pin)
msg.add_part(part)
part.write_uint32(1 if pullup else 0)
msg.add_part(part) # I would like to set a breakpoint here in order to see whether it is added as reference or it is copied in the c extension
self._serial.write_msg(msg)
Run Code Online (Sandbox Code Playgroud)

我想从 python 的调试器进入 C 调试器。我现在的做法是放置一个输入(“按 Enter”)并将 C 调试器附加到进程,但我发现这很不方便。我想从 python 进入扩展,这可能吗?