欢迎登陆真网站,您的到来是我们的荣幸。 登陆 注册 忘记密码? ☆设为首页 △加入收藏
欢迎加入真幸福QQ群
电脑知识: 基础知识 网络技术 操作系统 办公软件 电脑维修 电脑安全 windows7 windows8 windows10 服务器教程 平板电脑 视频播放教程 网络应用 互联网 工具软件 浏览器教程 QQ技巧 输入法教程 影视制作 YY教程 wps教程 word教程 Excel教程 PowerPoint
云南西双版纳特产小花糯玉米真空包装


Hadoop集群运行JNI程序
linux批量备份服务器配置文件和目录的脚本
Linux不为人知的12大内幕
IIS Worker Process 遇到了一个问题需要关闭的解决
Linux下通过script 命令记录(数据库)操作步骤
提示No input file specified的解决方法
Linux系统下常用的三款网络安全工具
WinWebMail邮件投递超时错误解决办法
linux date命令查看和设置时间详解
在Linux系统中安装varnish-cache配置及体验方法
Linux系统中的gdb程序调试工具的命令知识介绍
【 来源:网络 】【 点击:1 】 【 发布时间:2017_03_03 08:59:59 】

  在Linux系统中有许多的命令程序来辅助系统的正常和方便运行,那么其中在系统中有着一个叫做gdb命令的程序,那么我们今天就来了解下关于gdb命令的知识吧!

  一、常规调试

  gdb是Linux下常用的程序调试工具,当然前提是用gcc/g++编译时加上-g参数,这样编译出的可执行程序会加上gdb调试信息。

  gdb命令不少,但常用的主要包括如下命令:

  (1)list [file:]functuon

  命令缩写是l,查看源码,不加参数时,向下显示源码,加参数-l时,向上显示源码,默认显示10行。

  也可以设置在某个函数出列出源码,需要注意的是:如果是非成员函数则用file:function即可,如果是类成员函数则用class::functuon。

  (2)edit [file:]function

  命令缩写是e,编辑当前所在的行,也可以编辑某个函数的源码(规则同list)。

  (3)break [file:]function

  命令缩写是b,设置断点,可以设置在某行或某个函数处(规则同list),此外还可以直接用文件名:行号来设置断点。

  (4)info

  命令缩写是i,列表gdb子命令的信息,如:info break, info variables, info stack等。

  (5)run [arglist]

  命令缩写是r,运行程序至断点处停住,run命令之后可以加上调试程序需要的参数。

  (6)next

  命令缩写是n,单步调试执行语句,如果遇到函数也当一条单步语句而不进入函数,类似于VC中的F10。

  (7)step

  命令缩写是s,单步调试执行语句,如果遇到函数会直接进入函数内部,类似于VC中的F11。

  (8)continue

  名利缩写是c,继续运行程序至下一个断点。

  (9)what

  查看变量类型。

  (10)print

  命令缩写是p,打印变量的值。

  (11)backtrace

  命令缩写是bt,查看堆栈信息。

  (12)enter

  回车键,重复执行上一条调试命令。

  (13)help [name]

  显示指定的gdb命令的帮助信息。

  (14)quit

  命令缩写是q,退出gdb。

  gdb调试运行程序时,用gdb .exe加载程序,gdb调试core dump时,用gdb .exe .core加载程序,执行r命令可以开始运行程序。在gdb内编辑完代码后,不需要退出gdb,而直接在gdb里make即可,否则之前设置的断点等信息都付之一炬了。

  二、多线程调试

  (1)info threads

  命令缩写是info thr, 显示当前可调试的所有线程,每个线程会有一个gdb为其分配的ID,后面操作线程的时候会用这个ID,前面有*的是当前调试的线程。

  (2)thread ID

  命令缩写是thr,切换当前调试的线程为指定ID的线程。

  (3)thread apply ID1 ID2 command

  命令缩写规则同上,让一个或者多个线程执行gdb命令command。

  (4)thread apply all command

  命令缩写规则同上,让所有被调试线程执行gdb命令command。

  (5)set scheduler-locking off|on|step

  在调试多线程程序时,使用step或者continue命令调试当前线程时,其它线程也在并发执行,这个命令可以通过off|on|step来控制线程的执行,即:

  off:不锁定任何线程,即所有线程都执行,这是默认值。

  on:只有当前被调试程序会被执行。

  step:在单步的时候,除了next过一个函数的情况以外,只有当前线程会执行。

本网站由川南居提供技术支持,fkzxf版权所有 浙ICP备12031891号
淳安分站 淳安分站