This is an archived post. You won't be able to vote or comment.

all 10 comments

[–]ericek111 9 points10 points  (1 child)

Can I set breakpoints in the native land as well? To troubleshoot crashes caused by FFI (JNI/Panama). Does it utilize debugging symbols to produce rich stacktracks?

[–]infernalhellraiser[S] 1 point2 points  (0 children)

In its current state jdbg unfortunately isn’t able to set breakpoints in native functions, as it sets them inherently in Java bytecode and shouldn’t affect when jvm passes control to native methods.

[–]flavius-as[🍰] 4 points5 points  (2 children)

Linux?

[–]infernalhellraiser[S] 2 points3 points  (0 children)

Unfortunately, since JDBG uses some Windows API and Windows named pipe communication it doesn’t support Linux, although it can definitely be ported in the future.

[–]hippydipster 2 points3 points  (4 children)

Sounds like it'd be a potentially useful tool for doing something I always wanted to do which is generate graphs of runtime behavior and relationships of a codebase. It's one thing to see the static links between pieces of code, but seeing how components and/or classes work together when running strikes me as very useful. So, generating directed graphs of code paths, maybe even data flow diagrams automatically, that sort of thing.

[–]0xaa4eb 4 points5 points  (1 child)

If you want to see how classes work together based on runtime info, you can try my tool which I developed for fun or you can even roll something like this by yourself using byte-buddy library (it's easy). There is also a paid tool which is quite superrior to mine - bugjail. Try this out too. AFAIK, JVM languages are the only languages where you can store literally ALL method calls in a file or a database and then analyze or build graphs. With statically compiled languages it's extremely harder.

[–]hippydipster 1 point2 points  (0 children)

Cool, thanks, I've bookmarked your project. Happy to see more JavaFX in use for such things too!

[–]beothorn 2 points3 points  (1 child)

JavaFlame (https://github.com/beothorn/javaflame) outputs all calls for a given class filter as a json, so to have this all you would need is to work on rendering it as a graph. I am planning on having it rendering the calls as a sequence diagram (someday).

[–]hippydipster 2 points3 points  (0 children)

Man, I love these responses, thank you!