file 文件名

在gdb中载入某可执行文件

break

设置断点

支持如下形式:
break 行号;
break 函数名称;
break 行号/函数名称 if 条件

info

查看和可执行程序相关的
各种信息

kill

终止正在调试的程序

print

显示变量或表达式的值

set args

设置调试程序的运行参数

“set args 参数列表”

delete

删除设置的某个断点
或观测点

delete后可以使用breakpoints、
checkpoint、display、mem和
tracepoints。可使用
help delete查看

clear

删除设置在指定行号
或函数上的断点

continue

从断点处继续执行程序

list

列出gdb中可加载的
程序代码

不带任何参数使用list命令时,
会从开始位置列出所有代码,
同时list还支持列出指定行号
之间的代码

watch

在程序中设置观测点

如果数据改变,将给出
变化前后的情况

run

运行在gdb中可加载的程序

next

单步执行程序

step

进入所调用的函数内部,
查看执行情况

退出调用函数,回到调用处
使用finish命令

whatis

查看变量或函数类型

调用格式为“whatis 变量名/
函数名

ptype

显示数据结构定义情况

与whatis不同的是,
ptype可以显示类或
数据结构的定义情况

make

编译程序

quit

退出

一、gdb,在shell窗口调试

main.c内容:

main.c

#include <stdio.h>

int main()

{

int y=0;

for (int i=0;i<10;i++){

y+=i;

}

return 0;

}

编译:

xxxxxxx@xxxxxxx-desktop:~/test$ gcc -ggdb -std=c99 -o main main.c

启动gdb

1、gdb 执行文件名

xxxxxxx@xxxxxxx-desktop:~/test$ gdb main

GNU gdb (GDB) 7.1-ubuntu

Copyright © 2010 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html;

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law. Type “show copying”

and “show warranty” for details.

This GDB was configured as “i486-linux-gnu”.

For bug reporting instructions, please see:

http://www.gnu.org/software/gdb/bugs/;…

Reading symbols from /home/xxxxxxx/test/main…done.

2、list为列出源代码

(gdb) list

1

2 #include <stdio.h>

3 int main()

4 {

5 int y=0;

6 for (int i=0;i<10;i++){

7 y+=i;

8 }

9 return 0;

10 }

3、运行

(gdb) run

Starting program: /home/xxxxxxx/test/main

Program exited normally.

4、退出gdb

(gdb) quit

5、启动gdb后,再设置要加载的文件

(gdb) file main

Reading symbols from /home/xxxxxxx/test/main…done.

6、设置断点,,使用break行号

(gdb) list

warning: Source file is more recent than executable.

1

2 #include <stdio.h>

3 int main()

4 {

5 int y=0;

6 for (int i=0;i<10;i++){

7 y+=i;

8 }

9 return 0;

10 }

(gdb) break 7

Breakpoint 1 at 0x80483ca: file main.c, line 7.

7、运行,run

(gdb) run

Starting program: /home/xxxxxxx/test/main

Breakpoint 1, main () at main.c:7

7 y+=i;

8、离开这个断点,继续运行

(gdb) c

Continuing.

9、监视变量

(gdb) watch y

Hardware watchpoint 2: y

10、检查变量变化

(gdb) c

Continuing.

Hardware watchpoint 2: y

Old value = 1

New value = 3

main () at main.c:6

6 for (int i=0;i<10;i++){

(gdb) c

Continuing.

Breakpoint 1, main () at main.c:7

7 y+=i;

(gdb) c

Continuing.

Hardware watchpoint 2: y

Old value = 3

New value = 6

main () at main.c:6

6 for (int i=0;i<10;i++){

二、ddd,使用

可以在选择行或某变量后,watch,break等按钮,很方便,图形方式调试

右中部的面板是一些流程调试

splint是一个动态检查C语言程序安全弱点和编写错误的程序.splint会进行
多种常规检查,包括未使用的变量,类型不一致,使用未定义变量,无法执行的
代码,忽略返回值,执行路径未返回,无限循环等错误.

安装:

root@dp:/home/dp/cursestest # cd /usr/ports/devel/splint

root@dp:/usr/ports/devel/splint # make install clean

C指针原理(30)-C语言-LINUX/UNIX环境下调试相关推荐

  1. Linux/Unix环境下的make和makefile详解

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  2. Linux/Unix环境下的make命令详解

    无论是在linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  3. linux环境下调试嵌入式设备时出现Aborted、segmentation fault、卡死的问题以及关于指针使用的一点想法

    linux环境下调试一些嵌入式设备时出现Aborted.segmentation fault.卡死的问题,这些问题可能的原因为: 1.Aborted的问题,例如: # ./logUtils0322 [ ...

  4. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  5. mysql linux centos7_MySQL在Linux centos7环境下安装教程详解(图)

    这篇文章主要为大家详细介绍了Linux centos7环境下MySQL安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Linux centos7环境下安装MySQL步骤的详细介绍 安装My ...

  6. centos / Linux 服务环境下安装 Redis 5.0.3

    centos / Linux 服务环境下安装 Redis 5.0.3 原文:centos / Linux 服务环境下安装 Redis 5.0.3 1.首先进入你要安装的目录 cd /usr/local ...

  7. wireshark linux远程,如何在SSH连接Linux的环境下使用wireshark抓包云边端架构?

    原标题:如何在SSH连接Linux的环境下使用wireshark抓包云边端架构? TSINGSEE青犀视频云边端架构EasyNVR.EasyDSS.EasyGBS等都是有两种操作系统的版本,一种是li ...

  8. 如何在Linux桌面环境下自动启动程序?

    2019独角兽企业重金招聘Python工程师标准>>> 如何在Linux桌面环境下自动启动程序? 2014-01-06 11:24 布加迪编译 51CTO.com 字号:T | T ...

  9. windows 和 linux服务器环境下j2sdk 的安装和环境设置

    J2SDK 作为jsp系统配置中必不可少的组件,越来越多的得到应用.下来是我整理的以往工作时搜集的资料.使用时方便查询,希望对广大的工程师有帮助. windows服务器环境下 j2sdk 的安装和环境 ...

最新文章

  1. vue 使用fs_模仿vue-cli,手写一个脚手架
  2. GDCM:gdcm::ImageWriter的测试程序
  3. solr5.3.1 集成IK中文分词器
  4. 每天一道LeetCode-----计算从二维数组的左上角到达右下角的所有路径数及最短的那条,如果存在障碍物时又是多少
  5. Apache Derby-02通过IJ简单操作DERBY
  6. lhgselect 联动选择下拉菜单 v1.0.0 (2011-06-13)
  7. 【千字过程分析】剑指 Offer 04. 二维数组中的查找
  8. Android CardView卡片布局 标签: 控件
  9. python相似图片识别_Python+Opencv识别两张相似图片
  10. mysql 连续签到天数_最大连续签到天数-sql
  11. centos root密码_如何在CentOS中恢复丢失的root密码
  12. mqtt 变为乱码 接受16进制字节流_常见乱码问题分析和总结
  13. 【U盘量产工具】windows无法完成格式化——芯邦主控CBM2098S
  14. 笔记本电脑睡眠时间修改不生效
  15. 服务器DDoS攻击有几种类型?
  16. 听说看了这篇文章就彻底搞懂了什么是OPC(上)
  17. 共享网络隐藏计算机,把电脑变成无线路由器,wifi共享大师隐藏ssid-
  18. 【C++---16】常指针和常引用
  19. 分享一些ABP..ABS的广告过滤规则
  20. uni-app解析及配置(小程序对应的转换)

热门文章

  1. Zookeeper与Paxos
  2. mysql与hive2.1.1安装和配置
  3. html实现3d视觉特效
  4. 基于Neutron的Kubernetes SDN实践经验之谈
  5. win7 安装好redis 如何安装扩展
  6. System.setProperty()
  7. MSI failed, 不能卸载VMware
  8. C#:如何去掉groupbox的边框线
  9. 如何获取空对象的类型
  10. 【自动化测试】搭建一个简单从Excel读取用例内容并输出结果的脚本