Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调试c扩展时从gdb中的pdb执行步骤_Python_C_Swig_Python Extensions - Fatal编程技术网

Python 调试c扩展时从gdb中的pdb执行步骤

Python 调试c扩展时从gdb中的pdb执行步骤,python,c,swig,python-extensions,Python,C,Swig,Python Extensions,我正在为python开发一个C++扩展。我有一个C语言库,我用Swig包装它。不幸的是,我有一些错误,我想调试,是在C扩展。我的程序大量使用通过串行连接发送的MsgBuffer类。所有消息可能包含多个部分。如果我向MsgBuffer添加了一个MsgPart,那么msg应该复制一个消息,但是现在看起来我在添加一个引用,因为一旦我修改了部分,添加了修改的部分,初始部分看起来也被修改了 所以我想做的是在我的python程序中设置一个断点并逐步完成调试器 pin = 12 # Pin 12 on Te

我正在为python开发一个C++扩展。我有一个C语言库,我用Swig包装它。不幸的是,我有一些错误,我想调试,是在C扩展。我的程序大量使用通过串行连接发送的MsgBuffer类。所有消息可能包含多个部分。如果我向MsgBuffer添加了一个MsgPart,那么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)

我想从python的调试器逐步过渡到C调试器。我现在的做法是输入一个输入('press enter')并在进程中附加一个C调试器,但我觉得这很不方便。我想介绍一下python的扩展,这可能吗?

这样比较方便。我通常在C代码中设置断点并附加C调试器-不需要使用输入修改任何代码。可以使用eclipse、pdb和gdb进行配置和完成。在Windows上,它稍微简单一点。你在哪个站台using@JensMunk目前我使用的是Ubuntu-18.04 linux,我的目标也是windows,但这是在以后的状态下出现的(尽管我现在感到有点抱歉,如果这更容易的话)。我正在使用IntelliJ clion(用于c(++)扩展),并且可以使用pycharm保持在“IntelliJ环境”中。通常,我的脚本会在我有时间连接调试器之前终止,因此输入会终止。