On 04/11/2018 07:03 PM, David Medine wrote:
I am trying to debug an extern on linux using gdb and this tutorial https://puredata.info/docs/developer/DebuggingPdExternals (for MacOS and some years old) does not work on my machine. In fact, I've tried this a few times in the past with little success. The watchdog just hangs when I break and gdb and Pd can't do anything.
I remember Miller once suggesting that a way to run gdb on an extern is to build it into Pd with debugging symbols on. I am trying to do this, but having trouble there too. I added 'my_extern.c' to the src folder and to the list of .c files that comprise SRC in makefile.gnu. I also added -g to CFLAGS. Everything compiles and I see 'my_extern.o' in the obj folder, but the extern doesn't load when I create the object in Pd.
When I run pd from gdb, i can set a break point on my_extern_new, but when I create the object, I just get a ...cannot create message in the console and no debugging symbols. I feel like I'm missing a step somewhere.
i never had problems with using gdb and "external" objects (that is: objects, not copmiled into Pd).
i'm still using gdb, as i'm on linux. on macOS i hear that you should use the llvm based debugger instead.
a few tricks:
still think that it is a shame that pd-lib-builder doesn't do that by default; practically all my projects compile with "-g" all the time)
"watchdog...signalling Pd" messages all over the place once the execution is halted)
(inside the debugger) and load the external. after this, the debugger should be able to resolve all the symbols.
gfmdsar IOhannes