gdb commands

gcc/g++ -g -Wall -o sort sort.c

ddd --separate file

gdb file -tui

gdb file core

Ctrl+P
Ctrl+N
Ctrl+X+A

help

run
    run
    run arguments
        # run 12 5 7

break
    break line_number
        # break 43
    break function_name
        # break main

    break filename:line_number
        # break src/ins.c:12
    break filename:function_name
        # break src/ins.c:sort

    break +offset
        # break +12
    break -offset
        # break -12

    break *address
        # break *0x1234

    break break_args if condition_expression
        # break if i == 999 <==> continue N
        # break 31 if x==1 <==> break 31 ---> condition 1 x==1
        # break sort if x > 1 <==> break sort ---> condition 1 x > 1
        # break 55 if (x & y) == 1 && p != NULL && (i + j) % k < 2
        # break 57 if strlen(str) > 3 && myfun(str) && !error(n)
        # break 88 thread 3 if x==y

clear
    clear line_number
        # clear 43
    clear function_name
        # clear main
    clear filename:line_number
        # clear src/ins.c:12
    clear filename:function_name
        # clear src/ins.c:sort
    clear filename
        # clear main

tbreak

hbreak

rbreak

continue
    continue breakpoint_count
        # continue 3

condition
    condition breakpoint_index condition_expression
        # condition 1 x==1 # set condition
        # condition 1 # empty condition, but keep breakpoint

info breakpoints

next
    next times
        # next 3

step
    step times
        # step 3

delete
    delete
    delete breakpoint_index/watch_index/breakpoint_list
        # delete 5

list
    list filename
        # list main
    list function_name
        # list insert
    list filename:function_name
        # list cstring.c:main

quit

disable
    disable breakpoint_list
        # disable 1 2 3

enable
    enable breakpoint_list
        # enable 1 2 3
    enable once breakpoint_list
        # enable once 1 2 3

finish

until
    until
    until line_number
        # until 17
    until function_name
        # until swap
    until filename:line_number
        # until main:17
    until filename:function_name
        # until main:swap

print
    print varriable
        # print n
    print /format varriable
        # print /x n
        # print /c n
        # print /s n
        # print /f n

printf
    printf format, args
        # printf "%d\n", n

display
    display varriable
        # display *p
        # disable display 1
        # enable display 1
        # undisplay 1

ptype
    ptype varriable

---------
    print cos(0.0)          # $1 = 14368
    print (double)cos(0.0)  # $1 = 14368
    -----
    set $p = (double (*) (double))cos
    ptype $p # type = double (*) ()
    print cos(3.14159265) # $2 = 14368
    print $p(3.14159265)  # $3 = -1
---------

commands
    commands breakpoint_number
    ...commands...
    end
        # commands 1
        # silent
        # printf "fib was passed %d.\n", n
        # continue
        # end

        # define print_and_go
        # printf $arg0, $arg1
        # continue
        # end
        # commands 1
        # silent
        # print_and_go "fib was passed %d." n
        # end

        # commands 2
        # silent
        # printf "string has a length of %d\n", strlen(string)
        # end

        # commands 3
        # print *tmp
        # if 0 != tmp->left
        #   print tmp->left->val
        #   else
        #   print "none"
        #   end
        # if 0 != tmp->right
        #   print tmp->right->val
        #   else
        #   print "none"
        #   end
        # end

        # commands 3 # cancel conmmands 3
        # end

show user

watch
    watch variable/expression
        # watch x       # when x changes pause
        # watch x > 5   # when (x>5) changes pause
        # watch (i | j > 12) && i > 24 && strlen(name) > 6

info locals

# to show dynamic-array
    # int * p = (int *)malloc(sizeof(int) * 8));
    *pointer@number_of_elements
        # print *p@8
    (type [number_of_elements])*pointer
        # (int [8])*p

set
    set variable = n
        # set argc = 3
    set variable_array variable_list
        # set args 1 2 3 4 # change argv[1-5]
        # (char * [5])*argv
        # *argv@5
    set $variable = n
        # set $i = 0
        # print w[$i++]

ulimit
    ulimit -c n # n KB
    ulimit -c unlimited

limit
    limit coredumpsize n # n Byte, for tcsh, csh

backtrace

frame frame_number
    # frame 1

strace file args

info threads

thread thread_index
    # thread 3

bt

--------------------------------------------
    # ps ax
    # gdb server 1254 # gdb file process_id
    # bt
    # frame 1         # frame frame_id
--------------------------------------------

handle SIGSEGV nostop noprint

-------------------------------------------------------------------
    # cd z
    # gcc -g -c b.c
    # ar rc lib88.a b.o
    # cd ..
    # gcc -g -o a.out a.c -l88 -Lz # gcc -g -o a.out a.c z/lib88.a
-------------------------------------------------------------------
    # cd z
    # gcc -fPIC -c b.c
    # gcc -shared -o lib99.so b.o
    # cd ..
    # gcc -g -o a.out a.c -l99 -Lz # gcc -g -o a.out a.c z/lib99.so
-------------------------------------------------------------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值