0

I've just started on a project and I'm stuck. The projects goal is to trace the execution of a program. I've looked at Capstone engine, but as far as I can tell it doesn't allow live code execution and stepping. I want something that is able to trace execution, step, convert to assembly, and has an api or other way of other programming with it. GDB is perfect except for the very last part. It has an api for python, but gdb executes it rather than the other way around. So far, the only way I can see of meeting my goal is to write bindings for gdb to another language. Is this possible(seeing as it's a shell and all), or are there any other possible solutions that I'm missing?

To Clarify: Is there a library or framework that is similar to gdb in its functionality?

2 Answers2

1

Is there a library or framework that is similar to gdb in its functionality?

You are looking for libgdb, but that project is dead.

However, lldb may be the answer. From linked page:

The LLDB debugger APIs are exposed as a C++ object oriented
interface in a shared library.
Employed Russian
  • 199,314
  • 34
  • 295
  • 362
0

Your question is rather general but I can point to a few examples.

You can set your own breakpoints and then Next Until Breakpoint. The python can tell gdb to next/step/cont in the target via the gdb.execute method. I think this will meet your goal with some python enhancements.

Based on the same idea, you can look at the stack and do check for a particular function. This example shows the general way to feedback information to gdb through the python interface. You can set variables with the python code then use the gdb if/else functionality to make decisions.

Community
  • 1
  • 1
Matthew Fisher
  • 2,258
  • 2
  • 14
  • 23