
On 30/03/2020 23:20, Leandro Müller wrote:
Hi Are there any away to debug C module during python debug?
In a word, gdb. I've been doing this quite a lot lately. The trick is to start Python up under gdb, set a pending breakpoint in your C module, then carry on as normal. For example: rhodri@Wildebeest:~/hub_module$ gdb python3 GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git Copyright (C) 2018 Free Software Foundation, Inc. [...large amounts of boilerplate omitted for brevity...] Reading symbols from python3...Reading symbols from /usr/lib/debug/.build-id/28/7763e881de67a59b31b452dd0161047f7c0135.debug...done. done. (gdb) b Hub_new Function "Hub_new" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (Hub_init) pending. (gdb) run Starting program: /home/rhodri/Work/Lego/hub_module/hat_env/bin/python3 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Python 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.
from hub import hub
Breakpoint 1, Hub_new (type=0x7ffff6236340 <HubType>, args=(), kwds=0x0) at src/hubmodule.c:164 164 HubObject *self = (HubObject *)type->tp_alloc(type, 0); (gdb) ...and off you go! -- Rhodri James *-* Kynesim Ltd