我正在尝试调试一段涉及Python通过ctypes调用C函数的代码。我关心的Python代码行大致如下:
returnValue = cfunction()
其中cfunction是一个C函数。我想知道在cfunction代码中,cfunction从哪里返回。我该如何做?
看起来我可以使用带有python的gdb,但我不确定如何正确使用gdb,以便我可以在上面的行上设置断点并显示C代码中C函数返回的位置。当然,我已经使用-g编译了C代码。
这不是我必须使用gdb来完成的要求,只要我能够使用Linux中的一些免费(像啤酒或演讲)工具来完成它。
(我正在运行python 2.7.6,gdb 7.7,并且使用gcc 4.8.2编译了C代码。)
pdb
而不是C级别的调试器。如果是后者,你需要阅读有关gdb
或其他调试器的教程,并/或找到一个漂亮的GUI IDE来包装它,这样你就可以单击代码行旁边的“下一步”按钮并添加断点...但基本思路是b printf
。如果我的程序中有一个明确的C函数名为printf
,那么该命令将在该函数的开头设置断点。 - abarnertctypes
调用函数,通常可以通过编写“b cfunction”从“gdb”断点该函数。 - abarnertn
逐行步进(它“跳过”任何函数调用而不是深入其中),直到到达其中一个return
语句。或者你可以直接在return
语句上设置断点。但是,你真的需要阅读调试器教程并开始尝试;没有人能够在SO评论中通过对话来教你如何使用调试器。 - abarnert