GDB Guide

 
 

Guide to Faster, Less Frustrating Debugging



Summary of GDB commands for x86-64 Systems
Command Effect Starting: gdb gdb <file> Running and stopping quit Exit gdb run Run program run 1 2 3 Run program with command-line arguments 1 2 3 kill Stop the program quit Exit gdb Ctrl-d Exit gdb Note: Ctrl-C does not exit from gdb, but halts the current gdb command Breakpoints break sum Set breakpoint at the entry to function sum break *0x80483c3 Set breakpoint at address 0x80483c3 delete 1 Delete breakpoint 1 disable 1 Disable the breakpoint 1 (gdb numbers each breakpoint you create) enable 1 Enable breakpoint 1 delete Delete all breakpoints clear sum Clear any breakpoints at the entry to function sum Execution stepi Execute one instruction stepi 4 Execute four instructions nexti Like stepi, but proceed through function calls without stopping step Execute one C statement continue Resume execution until the next breakpoint until 3 Continue executing until program hits breakpoint 3 finish Resume execution until current function returns call sum(1, 2) Call sum(1,2) and print return value Examining code disas Disassemble current function disas sum Disassemble function sum disas 0x80483b7 Disassemble function around 0x80483b7 disas 0x80483b7 0x80483c7 Disassemble code within specified address range print /x $rip Print program counter in hex print /d $rip Print program counter in decimal print /t $rip Print program counter in binary Examining data print /d $rax Print contents of %rax in decimal print /x $rax Print contents of %rax in hex print /t $rax Print contents of %rax in binary print /d (int)$rax Print contents of %rax in decimal after sign-extending lower 32-bits. You need this to print 32-bit, negative numbers stored in the lower 32 bits of %rax. For example, if the lower 32-bits of %rax store 0xffffffff, you will see (gdb) print $rax $1 = 4294967295 (gdb) print (int)$rax $2 = -1 (gdb) print 0x100 Print decimal representation of 0x100 print /x 555 Print hex representation of 555 print /x ($rsp+8) Print (contents of %rsp) + 8 in hex print *(int *) 0xbffff890 Print integer at address 0xbffff890 print *(int *) ($rsp+8) Print integer at address %rsp + 8 print (char *) 0xbfff890 Examine a string stored at 0xbffff890 x/w 0xbffff890 Examine (4-byte) word starting at address 0xbffff890 x/w $rsp Examine (4-byte) word starting at address in $rsp x/wd $rsp Examine (4-byte) word starting at address in $rsp. Print in decimal x/2w $rsp Examine two (4-byte) words starting at address in $rsp x/2wd $rsp Examine two (4-byte) words starting at address in $rsp. Print in decimal x/g $rsp Examine (8-byte) word starting at address in $rsp. x/gd $rsp Examine (8-byte) word starting at address in $rsp. Print in decimal x/a $rsp Examine address in $rsp. Print as offset from previous global symbol. x/s 0xbffff890 Examine a string stored at 0xbffff890 x/20b sum Examine first 20 opcode bytes of function sum x/10i sum Examine first 10 instructions of function sum (Note: the format string for the `x' command has the general form x/[NUM][SIZE][FORMAT] where NUM = number of objects to display SIZE = size of each object (b=byte, h=half-word, w=word, g=giant (quad-word)) FORMAT = how to display each object (d=decimal, x=hex, o=octal, etc.) If you don't specify SIZE or FORMAT, either a default value, or the last value you specified in a previous `print' or `x' command is used. ) Useful information backtrace Print the current address and stack backtrace where Print the current address and stack backtrace info program Print current status of the program) info functions Print functions in program info stack Print backtrace of the stack) info frame Print information about the current stack frame info registers Print registers and their contents info breakpoints Print status of user-settable breakpoints display /FMT EXPR Print expression EXPR using format FMT every time GDB stops undisplay Turn off display mode help Get information about gdb

转载于:https://www.cnblogs.com/whuyt/p/4848866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值