raddebugger icon indicating copy to clipboard operation
raddebugger copied to clipboard

Any plans to add the ability to call functions similar to GDB, LLDB and VS debuggers?

Open Daxode opened this issue 1 year ago • 1 comments

Problem Statement

Mixed-mode debugging (for managed languages like those using CIL e.g. C#) often requires the ability to temporarily switch context to call into C functions in order to resolve the name of a given function pointer. But haven't found the ability to do this, yet? Is this planned? or am I missing something? maybe there is a philosophical reason not to add it that I don't know of? Or maybe it's just not on the roadmap yet?

Additional Info

E.g. Mono exposes mono_pmip (source found here) to enable: https://www.mono-project.com/docs/debug+profile/debug/

CoreCLR has IP2MD and more to enable CoreCLR (.NET) debugging: https://github.com/steveharter/dotnet_coreclr/blob/master/Documentation/building/debugging-instructions.md

To the curious here's an example of someone explaining how GDB does it: https://jvns.ca/blog/2018/01/04/how-does-gdb-call-functions/

Where it seems to be today

So far I've only managed to use Go To Name to find the function (required original source, didn't seem able to just return address) then at the source file location do Set Next Statement. But, again, this doesn't allow me to get the function pointer of the function until I've already hit the statement, where setting any parameters is not possible.

Daxode avatar Feb 13 '24 18:02 Daxode

Yeah, we'll add that eventually - it's not hard, it's just there are about 8 million dangerous corner cases (that the other debuggers just YOLO and do it). The big use is being able to call code that presents a better view of some data, but I think we have better ideas on how to handle that. The remaining uses are minor, but we'll probably have a way to do it someday.

jeffrbig2 avatar Feb 13 '24 21:02 jeffrbig2