diff --git a/.vscode/launch.json b/.vscode/launch.json index 6757ed47f6..f8bc17fe17 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,18 +4,22 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ + { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", - "program": "enter program name, for example ${workspaceFolder}/a.exe", - "args": [], + "program": "${workspaceFolder}/cmake_targets/ran_build/build/lte-softmodem", + "args": [ + "-O", "../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf", + "--noS1" + ], "stopAtEntry": false, - "cwd": "${workspaceFolder}", + "cwd": "${workspaceFolder}/cmake_targets", "environment": [], "externalConsole": false, "MIMode": "gdb", - "miDebuggerPath": "/path/to/gdb", + "miDebuggerPath": "${workspaceFolder}/cmake_targets/sudo-gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", @@ -25,4 +29,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/cmake_targets/gdb-helper b/cmake_targets/gdb-helper new file mode 100755 index 0000000000..fe85809c10 --- /dev/null +++ b/cmake_targets/gdb-helper @@ -0,0 +1,13 @@ +#!/bin/bash +cd "$(dirname "$0")/.." || exit +source oaienv +cd cmake_targets || exit + +cmd=( + ./ran_build/build/lte-softmodem + -O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf + --noS1 + "$@" +) + +exec sudo -E gdb "$@" --args "${cmd[@]}" diff --git a/cmake_targets/gdb.txt b/cmake_targets/gdb.txt new file mode 100644 index 0000000000..33d9bd6d5f --- /dev/null +++ b/cmake_targets/gdb.txt @@ -0,0 +1,54 @@ +Make sure you've built with debug info: + + cd ~/openairinterface5g # or wherever + source oaienv + cd cmake_targets + ./build_oai --UE --eNB --verbose-compile --run-with-gdb RelWithDebInfo + make -C ran_build/build -j4 lte-softmodem lte-uesoftmodem + +Verify the build was done correctly: + +$ ./gdb-helper +... +Reading symbols from ./ran_build/build/lte-softmodem...done. +(gdb) b main +Breakpoint 1 at 0x59f110: file /local/episys/openairinterface5g/targets/RT/USER/lte-softmodem.c, line 516. +(gdb) run +Starting program: /local/episys/openairinterface5g/cmake_targets/ran_build/build/lte-softmodem -O ../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf --noS1 +[Thread debugging using libthread_db enabled] +Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". + +Breakpoint 1, main (argc=4, argv=0x7fffffffe058) at /local/episys/openairinterface5g/targets/RT/USER/lte-softmodem.c:516 +516 { +(gdb) list +511 pthread_mutex_unlock(&nfapi_sync_mutex); +512 printf( "NFAPI: got sync (%s)\n", thread_name); +513 } +514 +515 int main ( int argc, char **argv ) +516 { +517 struct sched_param param = +518 { +519 .sched_priority = 79 +520 }; +(gdb) n +521 if (sched_setscheduler( 0, SCHED_RR, ¶m ) == -1 ) +(gdb) quit +A debugging session is active. + + Inferior 1 [process 19964] will be killed. + +Quit anyway? (y or n) y +$ + +If gdb says "no debugging symbols found" then clean your workspace and re-do +the build as above. + +(gdb) b main + +Using Vscode + + cd ~/openairinterface5g # or wherever + code . targets/RT/USER/lte-softmodem.c .vscode/launch.json + +See launch.json for details about how lte-softmodem is launched. diff --git a/cmake_targets/sudo-gdb b/cmake_targets/sudo-gdb new file mode 100755 index 0000000000..d660a77483 --- /dev/null +++ b/cmake_targets/sudo-gdb @@ -0,0 +1,6 @@ +#!/bin/bash +# Helper script for Vscode. See .vscode/launch.json "miDebuggerPath" +cd "$(dirname "$0")/.." || exit +source oaienv +cd cmake_targets || exit +exec sudo -E gdb "$@"