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

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

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

博客分类:

CC++C#LinuxUbuntu

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

编译:

[email protected]:~/test$ gcc -ggdb -std=c99 -o main main.c

启动gdb

1、gdb 执行文件名

[email protected]:~/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等按钮,很方便

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

图形方式调试

时间: 2024-12-23 04:00:24

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

调试利器GDB(上)

调试利器GDB(上) 1.1 GDB初识 1.1.1什么是GDB? GDB是GNU项目中的调试器(gnu debuger),能够跟尊程序的执行,也能恢复程序崩溃前的状态 1.1.2为什么需要GDB? 软件产品的研发过程必然伴随bug,调试时软件开发中不可或缺的技术(调试工具很重要) 1.1.3 DBG与binutils 1.2 GDB的常规使用 1.自定义程序得到启动方式(指定影响程序运行的参数)2.设置条件断点(在满足条件时程序暂停执行)3.回溯检查导致程序异常结束的原因(core dump)

调试利器GDB(下)

调试利器GDB(下) 2.1数据断点 GDB中支持数据断点的设置,watch命令用于监视变量是否被改变(本质为硬件断点)用法:watch var_name 2.2 GDB中的内存查看 GDB中可以查看任意内存区域中的数据,命令格式:x /Nuf expressionN -需要打印的单元数u -每个单元的大小f -打印数据的格式其数据格式如下: 2.3 GDB中的打印格式 实例:判断系统大小端 2.4函数调用栈查看 backtrace,查看函数调用的顺序(函数调用栈的信息)frame N 切换到栈

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

1)如何使用strace+pstack利器分析程序性能?http://www.cnblogs.com/bangerlee/archive/2012/04/30/2476190.html此文有详细介绍怎么用strace和pstack 2)Linux下多线程查看工具(pstree.ps.pstack)?http://blog.csdn.net/yfkiss/article/details/6729364 3)使用strace,lstrace,truss来跟踪程序的运行过程http://hi.baid

[iOS逆向实战 之十]动态调试利器---gdb基础篇

个人原创,转帖请注明来源:cnblogs.com/jailbreaker 一.调试平台搭建 1.GNU Debugger.首先安装ios下的gdb调试器,添加源:cydia.radare.org .搜索 GNU Debugger,安装之.(有些源的GDB好像不能用,这个测试没问题) 2.openSSH.这个应该都会装,没装过的参考,http://www.cnblogs.com/jailbreaker/p/4142609.html 3.adv-cmds.添加源:apt.saurik.com(这个应

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

GDB调试及其调试脚本的使用返回脚本百事通一.GDB调试 1.1. GDB 概述 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在 UNIX/Linux平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能.所谓“寸有所长,尺有所短”就是这个道理. 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让

调试linux内核环境搭建方法(ddd+busybox+qemu+linux3.5.4内核)

环境搭建 1.1.准备工作 (1).qemu虚拟机 (2).busybox软件 (3).linux-3.5.4内核 (4).ddd 调试工具(终端中输入 sudo apt-get install ddd 安装) 1.2.编译内核 (1)建立工作目录:mkdir -p ~/work/qemu (2)切换到此目录:cd ~/work/qemu (3)下载 linux内 核 (4)解压内核:tar -jxvf linux-3.5.4.tar.bz2 (5)切换到linux-3.5.4目录: cd li

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

http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdbLinux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: * 设置断点:* 监视程序变量的值:* 程序的单步执行:* 修改变量的值.       gdb支持下列语言C, C+

Linux 系统内核的调试

http://www.ibm.com/developerworks/cn/linux/l-kdb/index.html 本文将首先介绍 Linux 内核上的一些内核代码监视和错误跟踪技术,这些调试和跟踪方法因所要求的使用环境和使用方法而各有不同,然后重点介绍三种 Linux 内核的源代码级的调试方法. 调试是软件开发过程中一个必不可少的环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题.但是,Linux 系统的开发者出于保证内核代码正确性的考虑,不愿意在 Linux 内核

什么是core dump linux下用core和gdb查询出现&quot;段错误&quot;的地方

什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-3193279.html 有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误". 呵呵,这种问题我想很多人会经常遇到.遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自