12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- Debugging Graphene
- ==================
- .. highlight:: sh
- Running Graphene with GDB
- -------------------------
- To enable GDB support, the PAL loader and Graphene implement the GDB protocol to
- notify the debugger about any loading and unloading of dynamic libraries. The
- PAL loader also loads a |nbsp| GDB script to enable GDB features to make the
- debugging process easier.
- To build Graphene with debug symbols, the source code needs to be compiled with
- ``DEBUG=1``. Run the following commands in the source tree::
- make clean
- make DEBUG=1
- To run Graphene with GDB, use the following command to run your application::
- GDB=1 [Graphene Directory]/Runtime/pal_loader [executable|manifest] [arguments]
- Running Graphene-SGX with GDB
- -----------------------------
- Graphene-SGX supports debugging of enclavized applications if the enclave is
- created in debug mode. Graphene provides a specialized GDB for the application
- and the library OS running inside an enclave (using a normal GDB will only debug
- the execution *outside* the enclave).
- To build Graphene-SGX with debug symbols, the source code needs to be compiled
- with ``DEBUG=1``. Run the following commands in the source tree::
- make SGX=1 clean
- make SGX=1 DEBUG=1
- After rebuilding Graphene-SGX with ``DEBUG=1``, you need to re-sign the manifest
- of the application. For instance, if you want to debug the ``helloworld``
- program, run the following commands::
- cd LibOS/shim/test/native
- make SGX=1
- make SGX=1 sgx-tokens
- To run Graphene with GDB, use the Graphene loader (``pal_loader``) and specify
- ``GDB=1``::
- GDB=1 SGX=1 [Graphene Directory]/Runtime/pal_loader [executable|manifest] [arguments]
|