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. .Net程序员学用Oracle系列(3):数据库编程规范

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.书写规范 1.1.大小写风格 1.2.缩进风格 1.3.换行 1.4.其它 2.命名规范 2.1.数据库对象命名 2.2.变 ...

  2. C语言之自增和自减运算符

    一 自增和自减 自增(++):就是给自己的值再加1 自减(--):就是给自己的值减1 tips: ++(--)可以放在前面,也可以放在后面,效果都是一样,都是会给自身+1(-1) 前缀++(--):会 ...

  3. java中的instanceof

    instanceof是Java.php的一个二元操作符(运算符),和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是判断其左边对象是否为其右边类的实 ...

  4. 前端MVC学习笔记(三)——AngularJS服务、路由、内置API、jQueryLite

    一.服务 AngularJS功能最基本的组件之一是服务(Service).服务为你的应用提供基于任务的功能.服务可以被视为重复使用的执行一个或多个相关任务的代码块. AngularJS服务是单例对象, ...

  5. 微信小程序前置课程:Flex 布局教程(一):语法篇

    原文:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html?utm_source=tuicool 网页布局(layout)是CSS的一个重点 ...

  6. Redis配置成系统服务(CentOS7)

    1. 进入到redis安装目录,具体位置看你安装时的路径了. cd /usr/local/redis/ 2. 编辑配置文件 sudo vim ./redis.conf 3. 将如下配置项注释掉 #bi ...

  7. ajax加php实现简单的投票效果

    废话少说,作为一个前端猿,首先上前端的代码. 1.上html代码: <!DOCTYPE html> <html> <head lang="en"> ...

  8. Ubuntu下Git的使用之创建版本库

    创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...

  9. jQuery中操作Ajax方法小结

    有时候,越深入去了解一个点,越发觉得自己无知,而之前当自己晓得一两个片面的点还洋洋自得,殊不知,这是多么讽刺 jQery对Ajax操作进行了封装,常见的 ajax()属于最底层的方法,使用频率很高的 ...

  10. 凭借5G研究优势,诺基亚将携手菲律宾将其应用于VR/AR领域

    目前,很多人都在抱怨网速不行,影响视频的流畅播放,未来这些问题可以通过5G解决.近日,诺基亚和PLDT的全资子公司Smart首次在菲律宾一个"现场"网络演示上实现了5G速度,该网络 ...