What Is the Recommended Way to Perform Source-Level Debugging of System Library Calls

What are the ways by which one can debug a Flutter app?

DevTools is what your precisely looking for,

For debugging and profiling apps, DevTools might be the first tool you
reach for. DevTools runs in a browser and supports a variety of
features:

• Source-level debugger

• Widget inspector that displays a visual widget tree, and “widget
select” mode where you select a widget in the app and it drills down
to that widget in the tree.

• Memory profiler

• Timeline view that supports tracing, and importing and exporting trace
information Logging view

Excerpt taken from the official Flutter docs,

To know more about DevTools head over to the link given below,

https://flutter.dev/docs/testing/debugging

A GIF taken from the above link

what tool for debugging a linux kernel?

First, see related question Linux kernel live debugging, how it's done and what tools are used?. Try to use KDB or Ftrace.

How is Linux kernel live debugging done and what tools are used?

Another option is to use an ICE or JTAG controller, and GDB. This 'hardware' solution is especially used with embedded systems.

But for instance QEMU offers similar features:

  • start QEMU with a GDB 'remote' stub which listens on 'localhost:1234' : qemu -s ...,

  • then with GDB, you open the kernel file vmlinux compiled with debug information (you can take a look a this mailing list thread where they discuss the unoptimization of the kernel).

  • connect GDB and QEMU: target remote localhost:1234

  • see your live kernel:

      (gdb) where
    #0 cpu_v7_do_idle () at arch/arm/mm/proc-v7.S:77
    #1 0xc0029728 in arch_idle () atarm/mach-realview/include/mach/system.h:36
    #2 default_idle () at arm/kernel/process.c:166
    #3 0xc00298a8 in cpu_idle () at arch/arm/kernel/process.c:199
    #4 0xc00089c0 in start_kernel () at init/main.c:713

Unfortunately, user-space debugging is not possible so far with GDB (no task list information, no memory management unit reprogramming to see different process contexts, ...), but if you stay in kernel-space, that's quite convenient.

  • info threads will give you the list and states of the different CPUs

You can get more details about the procedure in this PDF:

Debugging Linux systems using GDB and QEMU.

How to debug JNI/C library?

The dbx debugger (part of Sun Studio) can attach to a JVM process and let you single step between Java code and native code. The functionality went by the code name "jdbx", although it's all part of dbx. It hasn't been heavily promoted, so it might have bugs. There were issues when the IDE had two debug engines both handling Java, but using the command line dbx avoids those issues.

Of course, there are probably lots of more conventional ways to debug your specific problem without necessarily using source level debugging that can mix the Java and C code.



Related Topics



Leave a reply



Submit