README.md
1<!--
2 Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
3
4 SPDX-License-Identifier: CC-BY-SA-4.0
5-->
6
7This is an example of CAmkES RPC connection, using the CAmkES GDB debugger.
8
9See [DEBUG.md](https://github.com/seL4/camkes-tool/blob/master/docs/DEBUG.md) for more information.
10If this project is checked out using repo, a copy of these docs can be found in tools/camkes/docs/DEBUG.md
11
12To run this app:
13```bash
14# From an empty directory
15repo init -u https://github.com/seL4/camkes-manifest.git
16# repo has been initialized in blah
17repo sync
18# Fetching projects: 100% (10/10), done.
19make x86_debug_simple_defconfig
20#
21# configuration written to .config
22#
23make # -j 8
24# [GEN_IMAGE] capdl-loader-experimental-image
25
26qemu-system-i386 -nographic -m 512 -cpu Haswell \
27 -kernel kernel-ia32-pc99 \
28 -initrd capdl-loader-experimental-image-ia32-pc99 \
29 -device isa-serial,chardev=ch0 \
30 -device isa-serial,chardev=ch1 \
31 -chardev file,path=/dev/tty,id=ch0 \
32 -chardev socket,host=127.0.0.1,port=1234,id=ch1,server,wait
33# QEMU waiting for connection on: disconnected:tcp:127.0.0.1:1234,server
34# Run gdb in your top level project
35gdb stage/x86/pc99/bin/client_group_bin
36# Reading symbols from stage/x86/pc99/bin/client_group_bin...done.
37(gdb) target remote:1234
38# Remote debugging using :1234
39# Remote debugging using :1234
40# run () at somepath/camkes-gdb/apps/debug-simple/client.c:31
41# 31 camkes_software_breakpoint();
42(gdb) c
43# Continuing.
44
45# Program received signal SIGTRAP, Trace/breakpoint trap.
46# run () at somepath/camkes-gdb/apps/debug-simple/client.c:32
47# 32 j = a_echo_int(i);
48(gdb) # You can now debug things
49```