linux-c/c++调试利器gdb、ddd小试

原文链接: http://deepfuture.iteye.com/blog/749148

博客分类:

一、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;

}

深未来技术原创文章,如转载,请注明来源http://deepfuture.iteye.com/

编译:

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

启动gdb

1、gdb 执行文件名

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

GNU gdb (GDB) 7.1-ubuntu

Copyright (C) 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/deepfuture/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/deepfuture/test/main 
 
Program exited normally.
4、退出gdb
(gdb) quit
5、启动gdb后,再设置要加载的文件
(gdb) file main
Reading symbols from /home/deepfuture/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/deepfuture/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等按钮,很方便
右中部的面板是一些流程调试
 图形方式调试
 
 
 


 

linux-c/c++调试利器gdb、ddd小试的更多相关文章

  1. Linux C++调试利器-gdb

    在Linux上开发后台C++程序时,没有类似Windows VisualStudio那样强大的可视化IDE.为了提高调试效率,快速定位问题,需要掌握gdb工具的一些基本用法. 添加调试符号信息  co ...

  2. linux 调试利器gdb, strace, pstack, pstree, lsof

    1) 如何使用strace+pstack利器分析程序性能? http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html 此文有详细 ...

  3. 调试利器GDB(下)

    本节我们研究gdb更深层的用法: 数据断点: 可以根据变量的值来监视变量. 数据断点本质是硬件断点,数量有限. watch var_name告诉gdb我们关注var_name这个变量,如果它的值被改变 ...

  4. 调试利器GDB(上)

    什么是GDB: GDB应用: 静态分析工具与动态分析工具: GDB启动方式: GDB启动之后会有一个交互式的命令行,可以输入GDB特定的命令让GDB去工作. gdb test.out意思是这一次gdb ...

  5. gdb 调试利器

    1. gdb 调试利器 GDB是一个由GNU开源组织公布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调试工具.对于一名Linux下工作的c++程序猿,gdb是不可缺少的工具: 1 ...

  6. [转] linux下的c/c++调试器gdb

    PS:1. 断点C++类函数,用b 命名空间::类名::方法名 2. 编译参数一定要加-g,才可断点调试 http://www.cnblogs.com/xd502djj/archive/2012/08 ...

  7. Linux gcc/g++下GDB调试及其调试脚本的使用

    GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB ...

  8. linux下的c/c++调试器gdb

    Reference:  http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdbLi ...

  9. linux中的调试知识---基础gdb和strace查看系统调用信息,top性能分析,ps进程查看,内存分析工具

    1 调试一般分为两种,可以通过在程序中插入打印语句.有点能够显示程序的动态过程,比较容易的检查出源程序中的有关信息.缺点就是效率比较低了,而且需要输入大量无关的数据. 2 借助相关的调试工具. 3 有 ...

随机推荐

  1. 【stanford C++】字符串(String)与流(Stream)

    字符串(String)与流(Stream) 一.C++中字符串(String) 字符串(String):就是(可能是空的)字符序列. C++中的字符串在概念上和Java中的字符串类似. C++字符串用 ...

  2. 中文格式python 打印json格式的数据中文显示问题

    废话就不多说了,开始... 平日会有这么一个应用场景,会用python去处置json格式的web API,以“ip.taobao.com”的API为例,详情见http://ip.taobao.com/ ...

  3. 给你的git仓库瘦身

    很久没有写博客了,最近遇到了一个git问题,比较典型,记录下来与大家分享. 我们使用git版本控制的时候享受了很多便利,不管是代码合并,分支提供给我们的并发,但我们也往往忽略了每次提交之后在我们本地项 ...

  4. php+redis实现多台服务器内网存储session并读取

    大型网站由于大并发的问题会导致系统出现诡异的崩溃性问题这着实让人很是蛋疼,首先考虑的就是负载均衡服务器来处理这个,当然数据库的性能也是非常非常重要的,今天就说下在负载均衡情况下对于session这个问 ...

  5. .Net程序员学用Oracle系列(1):导航目录

    本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...

  6. NodeJS Stream 三:readable

    什么是可读流 可读流是生产数据用来供程序消费的流.我们常见的数据生产方式有读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStrea ...

  7. [jQuery]on和bind事件绑定的区别

    on和bind事件绑定的区别 一个demo展示 <!DOCTYPE html> <html lang="zh"> <head> <titl ...

  8. HTML5 智能表单

    HTML5 智能表单 1.表单新增属性  ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...

  9. cocos2d-x中DrawNode常见的图像绘制函数

    //绘制矩形  ('起始点' , '目标点' , '填充颜色') auto rect=DrawNode::create(); rect->drawRect(Vec2(0,0),Vec2(100, ...

  10. openstack私有云布署实践【8.2 身份认证keystone的API创建(办公网环境)】

    其中一台controller上面加入环境变量,我选controller1,关注的是endpoint的名称不一样,其它创建的参数与生产环境一致 export OS_TOKEN=venicchina ex ...