8

How to debug python script in C level using GDB. Give me a simple example for this.My primary goal is to get the trace of libc function called from my python script.

5
  • 2
    Please say you're using ctypes or trying to do a low-level hack... And that you've got the debug version of Python. Commented Jul 26, 2018 at 11:43
  • Yes, I am using python-devel version. Also I want to do a low-level hack Commented Jul 26, 2018 at 11:48
  • Oh, good. You get an up vote then. Any particular reason you've picked Python 2 for your hack? Commented Jul 26, 2018 at 11:50
  • I need to go for both python 2 and 3.. starting from python 2 for now Commented Jul 26, 2018 at 11:57
  • You can follow instructions on wiki.python.org/moin/DebuggingWithGdb to debug python script. To get the trace of libc function you can set a breakpoint on it with b <libc function name>. Commented Jul 27, 2018 at 14:35

2 Answers 2

4

See the thing is for binary(.so) files, you surely cannot apply breakpoint to a particular line, but surely you can apply breakpoint to a function. Say using

(gdb) b func_name

you can easily apply breakpoint to a function and thereby obtain the backtrace whenever the breakpoint is found. First run your python sc

  1. Start gdb:

    gdb -ex r --args python demo.py
    
  2. Apply breakpoint:

    (gdb) b func_name
    
  3. Run:

    (gdb) run
    

This should work for your case.

Sign up to request clarification or add additional context in comments.

1 Comment

So where would this look for function "func_name". I need to know this. This would play a crucial role in my case.
1

You can always Python using gdb and set breakpoints as you like

gdb -ex r --args python script.py args

If you want to look what happens in Python while running Python script I suggest to use mixed mode

gdb -ex r --args python -m pdb script.py

This way, you can break in pdb, then press Ctrl-C and end up inside gdb. Then, bt will give you stack trace inside Python.

2 Comments

So where to add breakpoints in such a case? say for a c file abc.c, I add "b abc.c:10"... but for the python file, I cannot add the breakpoint directly to python as far as my understanding goes. The c files used here would be the binary(.so) files... how to add breakpoint to them now?
You also need: python-debuginfo package

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.