zoukankan      html  css  js  c++  java
  • gdb常用命令

    find ./ -name "*.sql" | awk '{ cmd_str="""$0"""; print cmd_str}' | xargs grep -rn IFUSEDESTROUTE

    dir /v8t/ngtf/server/trade_server:$cdir:$cwd
    break commit_mq_thread.cpp:59 if (processing_idx==636645)

    dir /tmp/src/data_pump:$cdir:$cwd
    dir /home/yong.liu2/src/arch/offer2/offer/exch_market/offer_test/recv_czcemd:$cdir:$cwd
    break zk_mgr.cpp:210
    break zk_mgr.cpp:902

    gdb -c core文件 执行文件 #查看core文件

    gdb -d /tmp/jinyuankehuwenti/src_v8t/product/v8t/trade_server:/tmp/jinyuankehuwenti/src_v8t/ngtf/server/trade_server trade_server
    >dir /tmp/jinyuankehuwenti/src_v8t/product/v8t/trade_server:/tmp/jinyuankehuwenti/src_v8t/ngtf/server/trade_server:$cdir:$cwd #设置源代码路径
    break process_thread.cpp:123 if ((info.serialno==660390))
    >break public_business.cpp:8321 if (FldCancelReturnReq.entrust_no==1)
    >display FldShMarginDisSyn.bs_margin_flag
    >break public_business.cpp:5774 if ((cur_serial>=854398)&&(cur_serial<=85502))
    break sync_hold_handle.cpp:5290 if ((strcmp(req.tx_no.buf, "02200667")==0)&&(strcmp(req.contract_code.buf,"ag1512")==0))

    dir /tmp/offer:/tmp/offer/zk_2:$cdir:$cwd
    break zk_mgr.cpp:1153

    gdb -d /tmp/v8t_8316_test/src/product/v8t/trade_server trade_server

    gdb -d {src路径} 程序名|;|core文件
    >start #开始运行并在main中停止
    >dir /tmp/v8t_8316_test/src/product/v8t/trade_server:/tmp/v8t_8316_test/src/ngtf/server/trade_server/:$cdir:$cwd #设置源代码路径
    >list CAppServer::Run() #查看源代码
    >ctrl+x+a #显示/隐藏图形化
    > break appserver.cpp:318 if ((serialno==101475)||(serialno==105431)) #条件断点

    break process_thread.cpp:123 if (nextSequence==25528)

    break appserver.cpp:238
    > break public_business.cpp:5933 if (FldDoneReturnReq.entrust_no==151940)
    > break order_manage.cpp:2045 if (strcmp(FldFundReq.cust_no, "1001101771")==0)
    break order_manage.cpp:12530
    >break appserver.cpp:318 if ((serialno>=1023942)) #((serialno>=1048506))
    break public_business.cpp:10088 if (strcmp(FldDoneReturnReq.exch_done_no, "00000594")==0)
    (gdb) call close(1)
    (gdb) call close(2)
    (gdb) shell tty
    /dev/pts/0
    (gdb) call open("/dev/pts/0",2)
    (gdb) call open("/dev/pts/0",2)

    >dir /tmp/v8t_src/v8t_8311/product/v8t/trade_bu
    >break entrust.cpp:78
    > break module_func.cpp:1258
    break trade_pub.cpp:14562
    break P_cal_can_open_qty

    1.命令:file 文件名
    功能:将指定的可执行文件加载到gdb中;

    命令:-d {directory}
    -directory={directory}
    功能:指定源文件和头文件所在的路径

    命令:set args 运行参数
    show args
    功能:设置或查看运行参数

    命令:path [directory] #把目录directory加入到搜索可执行文件和符号文件的路径中
    show paths #查看程序的运行路径。
    功能:设置或查看程序运行路径

    命令:-cd={directory}
    功能:以指定目录作为当前路径来运行 gdb

    命令:
    set environment varname [=value] #设置环境变量。如:set env USER=hchen
    show environment [varname] #查看环境变量。
    功能:设置或查看环境变量

    命令:cd

    命令:
    attach
    detach
    功能:挂接/取消挂接的进程

    命令:info program #查看程序的是否在运行,进程号
    info break [n] #查看断点
    info breakpoints [n]
    info watchpoints #列出当前设置的所有观察点
    info locals #打印出当前函数中所有局部变量及其值
    info catch #打印出当前的函数中的异常处理信息
    info [files/share] #列出当前的文件,共享库
    功能:查看程序的是否在运行,进程号

    命令:?????
    功能:指定工作目录、运行参数

    命令:?????
    功能:加载可执行文件或依赖的动态库




    命令: list
    功能: 查看源代码

    命令:?????
    功能:查看指定文件、指定位置或函数的源代码


    命令: b/break [行号] #设置断点
    b/break [函数名] #设置断点
    b/break [+/-]offset
    b/break file:func | file:nth
    b/break *address
    b/break line-number if condition
    b/break line threadthread-number
    tbreak #设置临时的断点。中断一次后断点会被删除
    命令: d/delete [breakpoint-number]#删除所有断点
    d/delete [range]
    clear func #清除函数func处的断点
    clear nth #清除第nth行处的断点
    disable [breakpoint-number | range] #
    enable [breakpiont-number | range] #
    enable once breakpint-number #设置指定断点有效,当到达断点时置为无效
    enable del breakpiont-number #设置指定断点有效,当到达断点时删除它

    命令: condition <break_list断点号列表> (condition条件)
    功能: 如cond 4 i==3 在断点4上增加中断条件



    命令:run
    功能:运行

    命令:start
    功能:运行,单在main处停止;

    命令: c
    功能:继续运行,直到结束或碰到断点

    命令:n/next
    n/next number
    功能:单步执行

    命令:step
    s/step number-of-steps-to-perform #
    功能:进入函数执行

    命令:finish
    功能:运行程序,直到当前函数完成返回。
    并打印函数返回时的堆栈地址和返回值及参数值等信息

    命令:u/until #当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体
    u/until line-number #继续运行直到到达指定行号,或者函数,地址等。
    u/until line-number ifcondition
    功能: 当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体

    命令:bt/backtrace [n]
    功能:打印当前的函数调用栈的所有信息
    n是一个正整数,表示只打印栈顶上n层的栈信息


    命令:
    watch #为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序
    rwatch #当表达式(变量)expr被读时,停住程序
    awatch #当表达式(变量)的值被读或被写时,停住程序。

    命令:
    display #程序停止时显示变量和表达时
    info display #显示当前所有的要显示值的表达式。
      delete display/undisplay [表达式编号] #删除要显示值的表达式
       disable display [表达式编号] #暂时不显示一个要表达式的值
       enable display 表达式编号 #与disable display相反,使用表达式恢复显示
    whatis #显示变量或函数类型
    ptype #比whatis的功能更强,他可以提供一个结构的定义

    二、远程调试
    1.服务端
    gdbserver :2345 [options] trade_server -b
    gdbserver [options] COMM PROG [ARGS...]
    gdbserver [] --attach COMM PID
    gdbserver [] --multi COMM

    Options:
    --debug
    --remote-debug Enable remote protocol debugging output.
    2.客户端
    gdb
    > target remote ip:port

    break public_business.cpp:14746 if (strcmp(cust_no, "82070418")==0)
    break order_manage.cpp:2103 if(strcmp(req_vector[0].all_contract_code.getValue(),"SR1705-C-7000")==0)
    break order_manage.cpp:753
    break match_return.cpp:235
    break public_business.cpp:6715

  • 相关阅读:
    利用idea里面的mysql插件进行导入sql文件
    JSTL标签
    deepin20系统下配置JAVA开发环境
    deepin20安装及问题解决
    SpringBoot 在项目启之后执行自定义方法的两种方式
    Nick 的经验书
    Java 经验书
    SpringBoot 经验书
    Linux 经验书
    在MacOS中启动SSH服务
  • 原文地址:https://www.cnblogs.com/tewuapple/p/7782333.html
Copyright © 2011-2022 走看看