在调试程序的过程中,查看程序的函数调用堆栈是一项最基本的任务,几乎所有的图形调试器都支持这项特性. GDB调试器当然也支持这一特性,但是功能更加灵活和丰富. GDB将当前函数的栈帧编号为0,为外层函数的栈帧依次加1,这些编号将成为一些GDB命令的参数,以指明将要操作的是哪一个函数的栈帧. GDB还支持使用Address作为栈帧的标识符,可在栈帧编号被破坏的情况下使用. 1.在栈帧之间切换 GDB中有很多针对调用堆栈的命令,都需要一个目标栈帧,例如打印局部变量值的命令. frame args 将当…
在调试程序的过程中,可以自由地查看相关的源代码(如果有源代码的话)是一项最基本的特性.      一些IDE在这方面做得相当好,GDB当然也提供了这项特性,虽然不如IDE直观,但在一定程度上要比IDE更加灵活和快捷.      GDB之所以能够知道对应的源代码,是因为调试版的可执行程序中记录了源代码的位置:因为源代码的位置在编译之后可能会移动到其它地方,所以GDB还会在当前目录中查找源代码,另外GDB也允许明确指定源代码的搜索位置.默认情况下,GDB在编译时目录中搜索,如果失败则在当前目录中搜索…
GDB堆栈跟踪与汇编调试 堆栈跟踪 源代码: 对预先编写的 stack.c 文件进行编译,并且使用 CGDB 进行调试,对堆栈进行跟踪,了解该代码堆栈是如何变化的. 在 CGDB 中,先设置 main 断点,接着运行(run),使用 frame info frame 分别查看当前栈帧的简要信息,以及该栈帧的详细信息.其中: frame 打印出的信息:栈的层编号,当前的函数名,函数参数值,函数所在文件及行号,函数执行到的语句. info frame 打印出的信息:函数地址,调用函数的地址,被调用函…
C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数.变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其它上层函数信息都打印出来.1. 为什么需要堆栈跟踪当你在开发程序时,你是否曾遇到过程序运行过程中突然当机,而你不知道哪一行代码出的问题:你是否曾遇到过程序调试过程中突然抛出异常,而你不知道哪一行代码出的问题:你是否曾遇到过当你在单步调试…
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典型的windows应用程序的上面是菜单栏,从菜单栏我们可以选择应用程序提供的各种功能,但是有的功能比较常用,且不能放在第一级菜单,需要进入二级.三级甚至更多的菜单才能选择.显然这样使用起来比较麻烦,于是这时候工具栏的作用就体现出来了,一般工具栏位于菜单栏的下面,但是位于客户窗口的上面.下面就是win…
下面是Java线程系列博文的一个编目:   Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Java线程:线程的交互 Java线程:线程的调度-休眠 Java线程:线程的调度-优先级 Java线程:线程的调度-让步 Java线程:线程的调度-合并 Java线程:线程的调度-守护线程 Java线程:线程的同步-同步方法 Java线程:线程的同步-同步块 Java线程:并发协作-生产者消费者模型 J…
jhat: heapdump文件分析工具 在前两篇系列文章JDK的命令行工具系列 (一) jps.jstat.JDK的命令行工具系列 (二) javap.jinfo.jmap中, 我们已经介绍过了jps.jmap这些命令行工具的使用, 所以这里就不在多做说明, 直接演示jhat的使用. 代码清单: public class JhatDemo { Integer i = 6; public static void main(String[] args) { String str = "qingsh…
最近刚好有同事在学习MongoDB,我们讨论过MongoDB应该置于服务器端然后通过web-service为客户端提供数据的上传下载服务.我们可以用上节讨论的respapi框架来实现针对MongoDB的CRUD操作.在谈到restapi之前我在这篇讨论先介绍一下MongoDB数据库操作的scala编程,因为与传统的SQL数据库操作编程有比较大的差别. 在前面有关sdp (streaming-data-processor)系列的博文中有一段是关于MongoDBEngine的.刚好把这套工具的使用在…
如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲:宇宙大战.枪战游戏少儿编程Scratch第四讲:射击游戏的制作,克隆的奥秘少儿编程第五讲:Scratch练习一坐标和移动少儿编程Scratch第六讲:抽奖游戏之造型.随机和广播少儿编程Scratch第七讲:字母雨打字练习少儿编程Scratch第八讲:变量和太空大战少儿编程Scratch第九讲:小猫…
jdk可视化工具系列--检视阅读 参考 java虚拟机系列 RednaxelaFX知乎问答 RednaxelaFX博客 JConsole--Java监视与管理控制台 jconsole介绍 JConsole(java monitoring and management console)是一款基于JMX(Java Management Extensions,即Java管理扩展)的可视化监视和管理工具. 启动JConsole 点击JDK/bin 目录下面的"jconsole.exe"即可启动…