====== GDB ======
====== Starting ======
gdb
gdb --args arg1 arg2 arg3
gdb -x gdbcommands --init-commands=gdb-openocd.cfg
====== Symbols and paths =====
Add symbols:
symbol-file /mnt/nfs/binary-with-symbols.elf
dir /mnt/nfs/src
====== Using ======
==== getting info ====
set print pretty on
* p[rint] - print value
* p * - print what is pointed by
* p/x - print in hex format
* p @ print values starting at
* p - List all variables starting with
* p ((sturct dummy*)variable)[0] - Dump structure members
* ptype var
* x /100bx m - eXamine memory located by variable m, print 100 bytes in hex format
* bt (backtrace)
* t (threads)
==== call stack ====
* bt (backtrace)
* frame 4 - switch to frame #4
* up
* down
==== breakpoints ====
* b[reak] malloc
* b mall - List all starting with mall
* clear malloc
* info break
* i[nfo] b
* dis[able] 1 - disable brakpoint 1
* en[able] 1
* d[elete] 1
* d 1 2
* d - delete all breakpoints
* cond[ition] 1 - stop at breakpoint 1 only if is true
* cond 1 - Remove condition from breakpoint 1
==== stepping ====
* s [tep] - step to next **source** line
* c [ontinue]
* n [ext] - step (do not enter to subroutines)
* fin [ish] - execute until stack frame returns
* u [ntil] - execute to line (to avoid loops)
==== infos ====
* show debug-file-directory
==== threads ====
* info threads - show info about threads
* thread 4 - switch to thread 4
* print mutex
* info line - print current code line
* frame - print current execution position and code
==== OpenOCD ====
Disable Cortex M0 interrupts
* mon cortex_m maskisr on
set remote hardware-breakpoint-limit 4
set remote hardware-watchpoint-limit 2
define hook-step
mon cortex_m maskisr on
end
define hookpost-step
mon cortex_m maskisr off
end
===== gdbcommands file =====
set verbose on
set auto-load safe-path /
set debug auto-load on
set sysroot /home/user/prj/buildroot/output/target
source ../../interactive/src
set substitute-path /usr/sbin/app /apps/app/app
add-symbol-file /home/user/prj/stm32/main/bootloader/build/bin/main.elf 0x08005000
dir ../../out/build/app-undefined
dir ../../out/build/app-undefined/apps/app
dir ../../out/build/app-undefined/apps/app/app
set substitute-path /usr/lib ../../out/target/usr/lib
set args -m 0 -c /etc/conf.d/conf.xml
#sharedlibrary
#target extended-remote 192.168.1.62:12345
break myFunction
target extended-remote localhost:2331
#monitor reset
monitor halt
# Setup GDB FOR FASTER DOWNLOADS
#set remote memory-write-packet-size 1024
#set remote memory-write-packet-size fixed
# Add GDB access to mem range where VTOR is located
mem 0xE0000000 0xE00FFFFF
define bootapp
monitor reset halt
# Adjust VTOR (Vector table offset register)
set {int}0xE000ED08 = &exception_table
# Set SP/PC to the values from the actual vector table
set $sp = *(int*)&exception_table
set $pc = *((int*)(&exception_table)+1)
end
==== symbols ====
* set symbol-reloading on
* add-symbol-file ~/mymodule.o 0xd8be4000
* add-symbol-file ~/myanother.o 0x12341234
* set debug-file-directory - set directory contain symbol file
* show debug-file-directory
==== file paths and libraries ====
* set verbose on
* set auto-load safe-path /
* info shared
* set sysroot /home/niziak/n/3/out/host/usr/arm-buildroot-linux-uclibcgnueabi/sysroot
==== source paths ====
Search paths (prefixes):
* dir /path/to/src1
* dir /path/to/lib/src2
Translate beginning of paths:
* set substitute-path /usr/lib ../../out/target/usr/lib
====== Kernel OOPS ======
=== Reading ===
PC is at RTMPCheckEtherType+0x90/0x4d4 [mt7601Uapsta]
LR is at RTMPCheckEtherType+0x34/0x4d4 [mt7601Uapsta]
Code: e59f3418 e0256593 e2859d43 e289902c (e5d939ba)
Oops occurs at offset 0x90 from RTMPCheckEtherType. 0x4d4 is length.
"Code" line shows last instruction. Instruction in bracket is problematic instruction (at RTMPCheckEtherType+0x90)
=== Tracing ===
Disassembly kernel binary or module binary:
objdump -dS vmlinux > /tmp/kernel.s
and look into generated code.
====== Python ======
apt-get install gdb python2.7-dbg
gdb python
====== DRAFTS ======
call raise(kernel-thread-id, signo) or call pthread_kill(pthread-thread-id, signo).