====== 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).