tree: 0af4edaf3a7aa3f975a4d5f77b9efce6ebdf6c21 [path history] [tgz]
  1. client.c
  2. CMakeLists.txt
  3. debug-simple.camkes
  4. debug-simple.tcl
  5. echo.c
  6. README.md
  7. settings.cmake
  8. Simple.idl4
apps/debug-simple/README.md

This is an example of CAmkES RPC connection, using the CAmkES GDB debugger.

See DEBUG.md for more information. If this project is checked out using repo, a copy of these docs can be found in tools/camkes/docs/DEBUG.md

To run this app:

# From an empty directory
repo init -u https://github.com/seL4/camkes-manifest.git
# repo has been initialized in blah
repo sync
# Fetching projects: 100% (10/10), done.
make x86_debug_simple_defconfig
#
# configuration written to .config
#
make # -j 8
# [GEN_IMAGE] capdl-loader-experimental-image

qemu-system-i386 -nographic -m 512 -cpu Haswell \
    -kernel kernel-ia32-pc99 \
    -initrd capdl-loader-experimental-image-ia32-pc99 \
    -device isa-serial,chardev=ch0 \
    -device isa-serial,chardev=ch1 \
    -chardev file,path=/dev/tty,id=ch0 \
    -chardev socket,host=127.0.0.1,port=1234,id=ch1,server,wait
# QEMU waiting for connection on: disconnected:tcp:127.0.0.1:1234,server
# Run gdb in your top level project
gdb stage/x86/pc99/bin/client_group_bin
# Reading symbols from stage/x86/pc99/bin/client_group_bin...done.
(gdb) target remote:1234
# Remote debugging using :1234
# Remote debugging using :1234
# run () at somepath/camkes-gdb/apps/debug-simple/client.c:31
# 31	    camkes_software_breakpoint();
(gdb) c
# Continuing.

# Program received signal SIGTRAP, Trace/breakpoint trap.
# run () at somepath/camkes-gdb/apps/debug-simple/client.c:32
# 32	    j = a_echo_int(i);
(gdb) # You can now debug things