摘要: 原文地址:http://coolshell.cn/articles/3643.html想更深入的学习GDB调试程序可以学习陈皓老师的:用GDB调试程序七、八年前写过一篇《用GDB调试程序》,于是,从那以后,很多朋友在MSN上以及给我发邮件询问我关于GDB的问题,一直到今天,还有人在问GDB的相关问题。这么多年来,有一些问题是大家反复在问的,一方面,我觉得我以前的文章可能没有说清楚,另一方面,我觉得大家常问的问题正是最有用的,所以,在这里罗列出来。希望大家补充。一、多线程调试多线程调试可能是问得最多的。其实,重要就是下面几个命令:info thread 查看当前进程的线程。 thread < 阅读全文
posted @ 2012-05-13 22:25 KingsLanding 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 一:列文件清单1. List(gdb) list line1,line2二:执行程序要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。(gdb)set args –b –x(gdb) show argsbacktrace命令为堆栈提供向后跟踪功能。Backtrace 命令产生一张 阅读全文
posted @ 2012-05-13 22:17 KingsLanding 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 接上一篇:使用 GNU 的 GDB调试器,内存布局和栈 —— 01原文地址:http://www.dirac.org/linux/gdb/02a-Memory_Layout_And_The_Stack.php符号表 一个符号就是一个变量或者一个函数。符号表如你所想:就是在可执行文件中的一个包含变量和函数的表。 正常情况下符号表只包含符号的地址,因为计算机不使用我们给变量或者函数起的名字。 为了让GDB对我们来说有用,有必要能够通过变量或者函数名来引用变量,而不是使用它们的地址。人类使用的是诸如“main()”或者“i”。 计算机使用如0x804b64d 或0xbffff784 之类的地址。因为 阅读全文
posted @ 2012-05-13 21:51 KingsLanding 阅读(1597) 评论(0) 推荐(0) 编辑
摘要: 使用 GNU 的 GDB调试器,内存布局和栈原文地址:http://www.dirac.org/linux/gdb/02a-Memory_Layout_And_The_Stack.php我们会学些什么? 为了更高效的学习使用GDB,你必须了解帧,通常也成为栈帧,因为帧构成了栈。为了学习栈,我们需要了解可执行文件的内存布局。这里的讨论主要都是理论上的,但是为了使学习比较有趣,在本章结束之前我们将通过GDB来展现栈和栈帧的例子。 本章学习的东西似乎相当的理论化,但是对于达到以下目的来说却是非常有用的:1. 理解栈对于使用GDB调试器是绝对有必要的2. 了解一个进程的内存布局有助于我们理解什么是段错 阅读全文
posted @ 2012-05-13 21:49 KingsLanding 阅读(2155) 评论(0) 推荐(0) 编辑
摘要: #include <algorithm>#include <vector>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <windows.h>using namespace std;#define SIZE 1024 * 1024 * 1024int main(){LARGE_INTEGER start; LARGE_INTEGER end; LARGE_INTEGER freq; QueryPerformanceFrequency(& 阅读全文
posted @ 2012-05-13 12:35 KingsLanding 阅读(227) 评论(0) 推荐(0) 编辑