<!-- [if !mso]>
<mce:style><!
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
--><!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
一,进程虚拟地址空间
<!-- [if !mso]>
<mce:style><!
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
--><!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
进程的虚拟地址空间分布与源代码的对应关系如下:
栈被破坏的情况下经常导致backstrace结果中当前指令地址异常,可以用来推测堆栈是否被破坏。
通过 /proc/<pid>/maps 文件查看程序运行时文本、数据、堆栈的内存区域映射
正常情况下的代码段地址区间可参考
”
/proc/<PID>/maps
”
文件中属性为
”
r-xp
”
对应项目
/proc
文件目录下,
还有一些其他进程信息,可用以进行进程信息的解读。
如果当前的地址已经不在给该
程序的代码区,也不在链接的库的代码区,则一般是栈被破坏了
。
进程所占用的虚拟地址空间如下所示,操作系统将使用其中的1G。分配给程序的3G中,也有一些必须留作他用。
二,进程的栈空间
如何用GDB查看内存(栈)的内容,请参阅:
http://blog.csdn.net/IterZebra/archive/2011/02/22/6198875.aspx
用GDB调试程序--调试器GDB常用功能(菜鸟级)
在上述文章中的 "三,调试实例分析
"中,使用了 (gdb) x/24x 0x7fffffffe320打印出从0x7fffffffe320到0x7fffffffe380的内存内容。根据打印结果,分析其中的0x7fffffffe320到0x7fffffffe360,将栈空间的存储情况如下描述:
分享到:
相关推荐
为了调试汇编语言程序,需要使用-gstabs参数重新编译代码,以便生成可调试的可执行文件。 ``` as -gstabs -o cpuid.o cpuid.s ld -o cpuid cpuid.o ``` 然后,可以使用GDB调试器来调试程序: ``` gdb cpuid ``` ...
【使用GDB调试程序】 GDB(GNU Debugger)是一款强大的开源调试工具,广泛用于调试C和C++程序。在Ubuntu系统中,通过GDB可以深入理解程序的运行过程,定位和修复bug。以下是对GDB调试程序的详细介绍: 1. **程序...
陈浩的《用GDB调试程序》和守望的个人博客的《GDB调试指南》这两份资料,提供了丰富的实践案例和详细的操作步骤,帮助读者从基础到进阶掌握GDB的使用技巧。通过阅读这些教程,你可以了解如何有效地使用GDB解决实际...
GDB(GNU调试器)是这个调试器的核心,它是开源社区广泛使用的C/C++程序调试工具。 首先,让我们深入了解QT Creator。QT Creator是一款集成开发环境(IDE),由QT公司开发,用于编写QT应用程序。它集成了编辑器、...
例如,它支持多种编程语言,可以调试多线程和多进程程序,还允许通过脚本自动化调试流程。GDB的命令行界面虽然没有图形化调试器直观,但对于一些复杂的调试任务,如远程调试、嵌入式系统调试等,GDB往往能提供更强大...
Qt Creator 是一个强大的集成开发环境(IDE),专为使用 Qt 框架进行跨平台应用程序开发而设计。它集成了代码编辑、构建管理、调试和版本控制等多种功能于一身,极大地提高了开发效率。在给定的标题和描述中,重点...
GDB 是一个强大的命令行调试工具,主要帮忙用户完成四个方面的功能:启动程序、设置断点、检查程序状态和动态改变程序执行环境。GDB 的强大之处在于其可以形成执行序列,形成脚本,非常容易集成在一起,使用几个简单...
详细并且全面的GDB入门,易理解。 内容: 一、 GDB概述 二、系统认识GDB 三、GDB的命令概貌 ...六、调试已运行的程序 七、查看栈信息 八、查看源程序 九、查看运行时数据 十、查看寄存器 十一、改变程序的执行
调试Bootloader(如U-BOOT)和内核时,通常需要一个运行在主机上的GDB服务程序,它通过以太网或串口与目标CPU连接,并可能提供Telnet接口以便进行目标CPU的初始化和程序下载。这种架构使得调试过程更为复杂,但也是...
GDB 是一款强大的开源调试器,用于C、C++以及其他支持的语言,它允许程序员在程序运行时检查和控制程序的状态,从而进行调试和问题排查。 描述中的“配置 Eclipse C 平台是要用到的 GDB”意味着 GDB 是在使用 ...
总的来说,这个压缩包为使用Windows 7的开发者提供了一个兼容Qt 4.8.5和QT Creator 2.8.0的调试环境,使得他们能够在开发Qt应用程序时,享受到高效且强大的调试支持。通过熟练掌握QT Creator和GDB的结合使用,开发者...
MingW和GDB是开发Windows平台上C/C++程序的重要工具,它们在软件开发中的作用不可忽视。MingW(Minimalist GNU for Windows)是一个将GNU工具集移植到Windows上的项目,使得开发者可以在Windows环境下使用GNU编译器...
- **多进程与多线程调试**:GDB支持对包含多个进程或线程的复杂程序进行调试,使用相应的命令可以切换和控制不同进程或线程的状态。 ### 运行程序下的调试技巧 对于已经在运行的进程,GDB提供了特殊的方法进行调试...
《GDB调试程序[陈皓]》与《GDB调试工具指南》这两份PDF文档,是深入了解和精通GDB(GNU Debugger)这一强大调试工具的重要参考资料。GDB是开源世界中广泛使用的C、C++以及其他多种语言的调试器,它允许开发者在运行...
- 为调试进程产生core dump文件并加载可执行程序和core dump文件。 14. 记录与分享 - 记录执行GDB的过程,这对于后期分析和分享调试经验很有用。 - 编写关于GDB使用的小技巧的文档,并通过markdown语法进行格式...
### GDB调试程序知识点 #### 一、GDB概述 - **定义**: GDB(GNU Debugger)是一款由GNU项目开发的开源调试工具,主要用于调试C、C++等语言编写的程序。 - **特点**: - 命令行界面:用户通过命令行交互的方式来控制...
GDB(GNU Debugger)是Linux操作系统下广泛使用的开源调试器,专为C、C++、Fortran等语言设计,用于帮助程序员调试他们的程序。在这个"gdb-6.0.rar_gdb_gdb-6_gdb-6.6"压缩包中,包含的是GDB的6.0版本,这是一个在...
GDB调试器(gdb-7.0.2)是一款由GNU开源组织提供的强大调试工具,主要用于在UNIX系统以及类似环境中调试C和C++程序。它具有丰富的功能,可以帮助开发者定位并解决代码中的错误,提高软件开发的效率和质量。在Windows...
在GDB的上下文中,"bin"可能包含GDB的主程序、库文件以及可能的依赖项,这些文件都需要放在正确的位置以便于Eclipse CDT能够调用和使用GDB进行调试。 总结来说,这个压缩包提供了一个适用于MinGW环境且专为Eclipse ...
开发者可以使用这个工具来调试用MinGW32编译的Qt应用程序,通过Qt Creator的直观界面实现高效且精确的代码调试。在实际使用中,需要将解压后的文件正确放置,并配置Qt Creator的相关设置,以启用这个调试器。对于...