搜档网
当前位置:搜档网 › qtcreator下配置调试器

qtcreator下配置调试器

qtcreator下配置调试器
qtcreator下配置调试器

Windows 7(64位)下Qtcreator配置调试器

邹雲鹏

2015年8月13日星期四

1、简述

对于程序员来说,通过调试器调试程序几乎是必不可缺的内容,然而Qtreator却不像vs那样带有默认的调试器,这就需要我们自己给Qtcreator配置调试器。

2、系统环境及软件版本

1)操作系统:Windows 7(64位)旗舰版;

2)Qt版本:Qt5.4.2 MSVC2010 OpenGL 32bit

3)Qtcreator版本:Qt creator 3.4.1(Based on Qt5.4.2 MSVC2010 OpenGL 32bit)

4)调试器版本:Windows Driver Kit Version 7.1.0

3、软件下载地址及安装方法

1)Qt5.4.2 MSVC2010 OpenGL 32bit

(a)下载地址:

http://download.qt.io/archive/qt/5.4/5.4.2/

下载软件名称为:qt-opensource-windows-x86-msvc2010_opengl-5.4.2.exe

(b)直接双击进行安装。安装路径可自己选择,其余均按默认安装直至安装完成。此版本自带有Qtcreator,在Windows所有程序->qt5.4里已经能找到

Qtcreator。

(c)打开Qtcreator,点击工具->选项,点击左侧的构建和运行,在Qt Version 里面已经可以自动检测到Qt5.4.2 MSVC2010 OpenGL 32bit,如图下所示:

(d)在构件套件(kit)里也可以自动检测到Desktop Qt5.4.2 MSVC2010 OpenGL32bit,但是调试器中为None,即调试器未设置。此时是不能进行程序调

试的。所以需要我们安装一个可用的调试器。

2)调试器Windows Driver Kit Version 7.1.0安装

(a)下载地址:

https://https://www.sodocs.net/doc/497942451.html,/en-us/download/confirmation.aspx?id=11800

(b)解压或用虚拟光驱打开,双击KitSetup.exe进行安装。

(c)待出现下图界面后勾选Debugging Tools for Windows,点击OK,然后按默认安装直至安装完成。

3)在Qtcreator中配置调试器

(a)重新打开Qtcreator,点击工具->选项,点击左侧的构建和运行

(b)在Debuggers选项里暂时还没有可用的调试器,现在我们添加调试器。在Debuggers选项下点击Add,Name可以自己命名(这里我命名的是vs debugger),

在Path中找到第(2)步中安装的调试器(默认安装路径为

C:\WinDDK\7600.16385.1\Debuggers\),选择cdb.exe,点击Apply。

(c)关闭Qtcreator并重新打开,点击工具->选项,点击左侧的构建和运行,在构件套件(kit)里点击Desktop Qt5.4.2 MSVC2010 OpenGL32bit,系统已自

动识别调试器vs debugger(若没自动识别,则在调试器选项中手动添加

vsdebugger)。

(d)点击ok,配置完成。

4)对程序进行调试

(a)新建或打开一个程序,按F9在构造函数里设置一个断点

(b)按F5或点击左下角开始调试按钮即可进行调试(第一次调试可能加载时间会比较长)。

(c)在右侧可看到调试时变量数据。

4、配置完成

GDB基本使用方法

GDB基本使用方法 GDB是用来调试用户态程序的一款工具,可以追踪程序运行轨迹,打出调用栈,寄存器内容,查看内存等等 首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的-g 参数可以做到这一点。如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。 启动GDB 直接找到gdb的路径执行就ok,进入GDB后可以输入help命令查看帮助信息 加载可执行文件启动 gdb executable-file set args 参数列表 以上两步等同于 gdb –args executable-file 参数列表 run或者start都可以启动调试 多用于调试启动阶段就异常的程序 调试正在运行的程序 以下三种形式都可以attach到正在运行的程序上调试 ps -ef | grep http www-data 24470 1 0 Jan17 ? 00:00:14 /usr/sbin/lighttpd gdb attach 24470 gdb --pid 24470 gdb -p 24470 设置断点 break -- Set breakpoint at specified line or function b func1 break func1 设置在func1处 b file:line 设置在文件的第几行处 b *0x指令地址设置在具体的某条汇编指令处 设置断点后,代码执行到func1处会被断住,方便我们查看当时的信息 打印调用栈 backtrace bt 如果你要查看栈下面层的详细信息 frame 栈中的层编号 查看所有断点 info break 删除断点 delete 断点号 如果不加断点号为删除全部断点 禁用断点 disable 断点号 启用断点

(完整word版)信息资源管理

第一编信息资源管理导论 一、信息资源:是指人类社会信息活动中积累起来的以信息为核心的各类信息活动要素(信息技术、设备、设施、信息生产者等)的集合。这里的信息活动包括围绕信息的搜集、整理、提供和利用而开展的一系列社会经济活动。 二、信息资源的类型: 1.记录型信息资源:包括由传统介质(纸张、竹、帛等)和各种现代介质(如磁盘、光盘、缩微胶片等)记录和存贮的知识信息,如各种书籍、期刊、数据库、网络等。记录型信息资源是信息资源存在的基本形式,也是信息资源的主体。 2.实物型信息资源: 这是用实物本身来贮存和表现的知识信息,如某种样品、样机,它本身就代表一种技术信息。这类信息资源不能直接进入信息系统,要对其进行管理,必须先将它转换成记录型信息。 3.智力型信息资源: 这类信息资源主要表现为人脑存贮的知识信息,包括人们掌握的诀窍、技能和经验,又称为隐性知识(Tacit Knowledge)。它由人的活劳动携带,根据社会需求提供各类咨询服务。 4.零次信息资源: 这类信息资源是指各种渠道中由人的口头传播的信息。零次信息的存在形式、传播渠道具有较大的随机性,难于存贮和系统积累,给这类信息资源的管理带来了很大困难,需要采用特殊的方法搜集、记录、整理和存贮。 三、信息资源的特征:需求性,稀缺性,选择性,共享性,时效性,不可分性,不同一性,驾驭性。 四、信息资源的功能 (1)经济功能 信息作为重要的经济资源,具有经济功能。信息资源的经济功能表现在多个方面,在经济活动中发挥不同的作用,其中最重要的是它对社会生产力系统的作用功能。 1.信息要素的注入有助于提高生产力系统中劳动者的素质,缩短劳动主体对客体的认识及熟练过程,使各生产要素以较快较佳的状态进入生产运行体系,从生产过程的时效性上表现与发挥其生产力功能。 2.信息要素通过与生产力系统中的不同决策管理层的相互作用,可以实现生产要素的最佳组合,增强管理层与管理对象之间的可知度和透明度,提高

用GDB调试程序

用GDB调试程序 GDB概述 ———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB 这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。 一个调试示例 —————— 源程序:tst.c 1 #include 2 3 int func(int n) 4 { 5 int sum=0,i; 6 for(i=0; i

21 } 22 23 printf("result[1-100] = %d \n", result ); 24 printf("result[1-250] = %d \n", func(250) ); 25 } 编译生成执行文件:(Linux下) hchen/test> cc -g tst.c -o tst 使用GDB调试: hchen/test> gdb tst <---------- 启动GDB GNU gdb 5.1.1 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-suse-linux"... (gdb) l <-------------------- l命令相当于list,从第一行开始例出原码。 1 #include 2 3 int func(int n) 4 { 5 int sum=0,i; 6 for(i=0; i

实例—使用gdb调试器

2.4 实例—使用gdb调试器 1.编写实例程序gcctest.c,见2.2小节的开头部分 2.编译 3.启动GDB,执行程序 启动gdb,进入gdb调试环境,可以使用gdb的命令对程序进行调试。 [root@localhost gdbtest txt]# gdb //启动gdb GNU gdb Fedora (6.8-27.el5) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later 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 "i386-redhat-linux-gnu". (gdb) run gcctest //在gdb中,运行程序使用r或是run命令,注意,gcctest没有调试信息Starting program: gcctest No executable file specified. Use the "file" or "exec-file" command. //要使用file或exec-file命令指出要运行的程序 (gdb) file gcctest //使用file命令指出要运行的程序gcctest,注意,对gdb命令也可以使用Tab gcctest gcctest.c gcctestg (gdb) file gcctest //使用file命令指出要运行的程序gcctest Reading symbols from /root/Desktop/gdbtest txt/gcctest...(no debugging symbols found)...done. (gdb) r //在gdb中,运行程序使用r或是run命令 Starting program: /root/Desktop/gdbtest txt/gcctest gcctest (no debugging symbols found) (no debugging symbols found) (no debugging symbols found) hello in main hello 1 hello 2 sum=54125560035401396161080590579269632.000000 Program exited with code 057. (gdb) file gcctestg //使用file命令指出要运行的程序gcctestg Reading symbols from /root/Desktop/gdbtest txt/gcctestg...done. (gdb) r //在gdb中,运行程序使用r或是run命令 Starting program: /root/Desktop/gdbtest txt/gcctestg gcctest hello in main hello 1 hello 2 sum=54125560035401396161080590579269632.000000 Program exited with code 057. (gdb) q //使用q或是quit命令退出gdb [root@localhost gdbtest txt]# 4.GDB命令简介

嵌入式调试技术

嵌入式调试技术 嵌入式开发中,主流的调试技术包括模拟(Simulation),在线仿真(In-Circuit Emulation),片上调试(On-Chip Debugging),插桩(Stub) 模拟(Simulation)是在 PC 机上通过软件虚拟出一个包含核心处理 器和外围电路的目标机系统,并且在该系统上模拟执行指令的过程。如国内有名的开源项目SkyEye就是一款指令级模拟器,能够模拟多种嵌入式开发板,可支持多种 CPU指令集,在 SkyEye 上运行的操作系统意识不到它是在一个虚拟的环境中运行,而且开发人员可以通过SkyEye 调试操作系统和系统软件。由于SkyEye的目标不是验证硬件逻辑,而是协助开发、调试和学习系统软件,所以在实现上 SkyEye与真实的硬件环境相比还是有一定差别的。 SkyEye在时钟节拍的时序上不保证与硬件完全相同,对软件透明的一些硬件仿真进行了一定的简化。 在线仿真(In-Circuit Emulation)是指利用在线仿真器,又称 ICE (In-Circuit Emulator),取代目标机处理器,进行程序调试的过程。ICE 一端与调试主机相连,另一端经仿真探头接在目标机处理器的底座上,通过自带的处理器模拟目标机的运行,其表现与目标机处理器相同,但开发者通过ICE可设置断点,查看寄存器,读写内存,进行单步操作。ICE 的优势在于能够完全取代目标机,实现全真模拟,但由于仿真探头不能随意更换,不利于普及,而且随着CPU主频的提高和处理器芯片表贴化封装的趋势,仿真探头的实现越来越困 难。 片上调试(On-Chip Debugging)正是为了解决在线仿真面临的问题而出现的技术。处理器厂商在芯片内部加入专门的调试控制逻辑,用以捕获处理器的总线数据和引脚信号,并让处理器核心在调试时钟下运行。用户通过串行接口与调试控制逻辑通信,控制CPU的运行,实现单步、断点等功能,并通过串行接口获得 CPU 运行状态,读取寄存器和内存信息。由于不受 CPU 主频和封装的限制,OCD在嵌入式处理器中被广泛采用,最典型的Motorola公司的 BDM(Backgroud Debug Mode)调试接口和联合测试行动小组提出的 JTAG 串行调试接口。早期的OCD技术没有实时跟踪功能,实现运行控制,如ARM7DMI处理器中的JTAG接口,只能实现单步、断点、读写寄存器、读写内存等基本的运行控制功能;而ARM920T 处理器中则引入了 E-Trace 实时跟踪单元,能够实时监控和跟踪 CPU的运行状态。 插桩(Stub)是内核调试和应用调试常用的方法。插桩调试需要提前下载一段调试桩(Stub)或者服务程序(Server)到目标机系统,并通过网络或者串口与调试主机上的客户端建立远程连接。客户端接受用户的调试命令,转发给目标机端的调试桩(或服务程序);调试桩(或服务程序)根据调试命令控制被调试程序的运行,并将调试信息反馈给主机上的调试客户端。GDB远程调试正是采用了这种技术,用户可以通过gdbstub调试操作系统内核,或者使用gdbserver 调试应用程序。插桩的优势在于软件灵活性软强, gdbstub和gdbserver 已经被移植到 ARM、PowerPC、X86、SARC等平台,不仅能够实现调

第九章 信息资源配置与评价

信息资源配置与评价 9.1.1 信息资源的含义 狭义信息资源是信息内容本身所构成的信息有序化集合,是人类社会经济活动经过加工、处理、有序化并大量积累后的有用信息的集合。 广义信息资源既包括信息内容本身,又包括有关提供信息的设施、设备、组织、人员和资金等。即信息资源及与它有关的各种资源的总和,是人类社会信息活动中积累起来的信息、信息生产者、信息技术等信息活动要素的集合。 9.1.2 信息资源的类型 类型定义 体载信息资源以人体为载体并能为他人识别的信息资源 文献信息资源以文献为载体的信息资源 实物信息资源以实物为载体的信息资源 网络信息资源从计算机技术、通信技术、多媒体技术相互融合而形成的网 络上可查找到的资源 9.1.3 信息资源的经济特性 生产性稀缺性使用方向的可选择性 9.1.4 信息资源的经济功能 9.2.1 信息资源配置的含义与层次 1.资源配置的概念指为最大限度地减少宏观经济浪费和实现社会福利最大化而对现代技术成果与各种投入要素进行的有机结合。 2.信息资源配置的含义与内容以人们的信息资源需求为依据、以信息资源配置的效率和效果为指针来调整当前的信息资源分布和分配预期的过程。 3.信息资源配置的层次(1)信息资源的宏观配置(2)信息资源的中观配置(3)信息资源的微观配置 9.2.2 信息资源配置的目标与原则 1.信息资源配置的目标实现资源的均衡合理配置,实现社会经济福利的最大化。 2.信息资源配置的原则(1)需求性原则(2)公平和效率原则(3)利用性原则 9.3.1 信息资源的市场配置 1.信息资源的市场配置——市场自组织过程 2.信息市场失灵(1)信息市场本身并不能保证构建一个最有利于信息生产的市场结构;(2)市场不能自动创造良好的外部环境,制定与信息活动有关的法律和政策;(3)产权明晰(包括有形产权和无形产权)是信息市场有效性的前提,但市场本身不能界定产权。

国嵌视频教程下载

嵌入式Linux视频教程 相关搜索:简体中文, 学习方法, 视频教程, 普通话, 嵌入式 中文名: 嵌入式Linux视频教程 资源格式: 光盘镜像 学校: 成都国嵌嵌入式培训中心版本: 成都国嵌嵌入式培训中心的基于广州友善之发行日期: 2010年 地区: 大陆 对白语言: 普通话 文字语言: 简体中文 视频光盘目录结构 国嵌视频1.iso -学习方法与课程体系介绍(学前必看) -学习方法介绍.avi -国嵌嵌入式课程体系.pdf -嵌入式Linux学习方法.pdf -国嵌课程1-嵌入式入门体验班(上) -第1天(嵌入式系统概述) -国嵌体验入门班-1-1(嵌入式系统概述).avi -国嵌体验入门班-1-2(ARM概述).avi -国嵌体验入门班-1-3(嵌入式Linux概述).avi -国嵌体验入门班-1-4(2440开发板介绍).avi -国嵌体验入门班-1-5(软硬件环境搭建).avi -第2天(开发板快乐体验) -国嵌体验入门班-2-1(开发板系统安装).avi -国嵌体验入门班-2-1(开发板系统安装-Jlink方式).avi -国嵌体验入门班-2-1(开发板系统安装-并口方式).avi -国嵌体验入门班-2-2(裸机程序体验).avi -国嵌体验入门班-2-3(QT系统体验).avi -国嵌体验入门班-2-4(Android系统体验).avi 国嵌视频2.iso

-国嵌课程1-嵌入式入门体验班(下) -第3天(Linux系统体验) -国嵌体验入门班-3-1(Linux定制安装).avi -国嵌体验入门班-3-2(Linux命令).avi -国嵌体验入门班-3-3(VI使用).avi -国嵌体验入门班-3-4(Linux系统管理).avi -国嵌体验入门班-3-5(Shell编程).avi -国嵌体验入门班-3-6(Qcd功能演示).avi -国嵌体验入门班-3-7(必修实验).avi -国嵌课程2-嵌入式Linux应用开发班 -第1天(编程基础) -国嵌应用班-1-1(GCC程序编译).avi -国嵌应用班-1-2(GDB程序调试).avi -国嵌应用班-1-3(makefile工程管理).avi -国嵌应用班-1-4(必修实验).avi -第2天(文件时间编程) -国嵌应用班-2-1(系统调用方式访问文件).avi -国嵌应用班-2-2(库函数访问文件).avi -国嵌应用班-2-3(时间编程).avi -国嵌应用班-2-4(必修实验).avi -第3天(多进程程序设计) -国嵌应用班-3-1(进程控制原理).avi -国嵌应用班-3-2(进程控制程序设计).avi -国嵌应用班-3-3(必修实验).avi -第4天(进程间通讯) -国嵌应用班-4-1(进程间通讯概述).avi -国嵌应用班-4-2(管道通讯).avi -国嵌应用班-4-3(信号通讯).avi -国嵌应用班-4-4(共享内存通讯).avi -国嵌应用班-4-5(必修实验).avi -第5天(进程间通讯) -国嵌应用班-5-1(消息队列).avi

gdb单步调试(中)

一、设置断点(BreakPoint ) 我们用break 命令来设置断点。正面有几点设置断点的方法: break 在进入指定函数时停住。C++ 中可以使用class::function 或function(type,type) 格式来指定函数名。 break 在指定行号停住。 break +offset break -offset 在当前行号的前面或后面的offset 行停住。offiset 为自然数。 break filename:linenum 在源文件filename 的linenum 行处停住。 break filename:function 在源文件filename 的function 函数的入口处停住。 break *address 在程序运行的内存地址处停住。 break break 命令没有参数时,表示在下一条指令处停住。 break ... if ... 可以是上述的参数,condition 表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100 ,表示当i 为100 时停住程序。 查看断点时,可使用info 命令,如下所示:(注:n 表示断点号) info breakpoints [n] info break [n] 二、设置观察点(WatchPoint ) 观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点: watch 为表达式(变量)expr 设置一个观察点。一量表达式值有变化时,马上停住程序。 rwatch

第二章 信息资源的优化配置

第二章信息资源的优化配置 1.信息资源配置的实质?(课后题) 作为经济发展的基本条件和表现形式,资源优化配置是指为最大限度减少宏观经济浪费和现实社会福利最大化而对现代技术成果与各种投入要素进行的有机组合。信息资源配置即为在整个社会资源有效配置条件下对信息产业投入与产出的安排。 2.信息资源配置的经济意义(2009年论述) ⑴有效配置信息资源有利于更好地满足人类对资源的需求(1分) 有效配置信息资源有利于最大限度地降低产品成本,因为:合理的资源配置结构不仅能有利于提高产品生产及营销管理中信息资源的使用效率,防止信息资源的闲置、浪费和短缺并存的弊端,(2分)而且有利于改善新产品成本构成中信息资源与非信息资源的关系以及非信息资源之间的关系,提高各类生产性资源和非生产性资源的综合使用效果。(2分) ⑵有效配置信息资源有利于最大范围内实现资源共享(1分) 信息资源具有共享性。信息资源的共享范围直接决定了信息资源开发利用的经济价值。信息资源共享范围的扩大除了取决于政治、经济等环境因素外,主要取决于下列两个因素:①信息资源的量,包括质量和数量。其中优良的质量是促进信息资源共享的内在因素,充足的数量是确保信息资源共享的外在条件。(2分)②信息资源扩散程度。信息资源共享以信息资源获取为前提。按照传播学原理,信息资源必须经过扩散才能为利用者接收(即获取)。可见,信息资源扩散程度也是影响信息资源共享范围的重要因子,信息资源扩散程度越大,信息资源共享范围就越广。(2分)有效配置信息资源有利于调节和改善上述影响因子。 ⑶有效配置信息资源有利于防止信息资源污染,实现社会可持续发展(1分) 随着社会经济和科技的发展,反映这一发展过程的信息也在急剧增长。庞大的信息资源,一方面为人们的科研、教学、生产、经营管理等活动提供了极其丰富的信息源,另一方面又导致了一些信息良莠混杂,影响决策效果。有效配置信息资源有利于形成最合理的信息资源开发和利用体系,形成信息资源开发和利用的良性循环。在该体系中,信息资源开发和利用被提到有效开发和有效利用的高度。(2分)此时,信息开发过程中的无度和无序,以及信息利用中的良莠不齐和低利用率都被限制在最小的范围内。在这样的状况下,工业生产中的信息污染实际上已经被控制在“零污染”状态,是可持续发展社会的重要特征。 3.信息资源配置应遵循哪些原则?(2010年论述)(样题简答)(课后题) ⑴社会经济福利最大化原则 信息资源从生产、传输、分配直至开发利用的全过程是一个十分复杂的系统工程,其中牵涉到的经济利益主体之多、波及范围之广、运作速度之快都是前所未有的。在这一系统中,每一经济利益主体既与其他经济利益主体相联系,又保持相对独立,独司其职。配置信息资源势必涉及各经济利益主体之间以及系统和环境之间的经济利益分配关系。判断信息资源配置是否有效不能单纯地从某一或某些经济利益主体出发,而必须站在全社会的高度,以社会经济福利最大化为判断标准。(4分) ⑵需求导向原则 信息资源不论在时间、空间矢量上的配置和在品种上的配置,最基本的依据都是用户对信息资源的需求性,我们无法想象将信息资源置于根本无需求欲望的用户手中能导致社会经济福利最大化。用户信息需求的每一变化都会影响到各种资源配置模式的效益,并进而影响到配置模式的调整和选择决策。(4分) ⑶公平原则 公平是指人们对某种社会现象的一种道德评价,认为它是否应当如此,是否公正合理。公平意味着经济福利在所有相关的人或组织之间的分配达到均衡状态。这里所说的均衡分配与平均分配有着截然不同的含义,它要求资源配置者在按照社会经济福利最大化原则和需求导向原则配置资源的时候要注意做到公正合理地对待每一用户,不偏不倚,不搀杂情感因素。(4分) ⑷市场手段和政府手段互补原则

GDB调试精粹及使用实例

GDB调试精粹及使用实例 一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。 (gdb)set args –b –x (gdb) show args backtrace命令为堆栈提供向后跟踪功能。 Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。 三:显示数据 利用print 命令可以检查各个变量的值。 (gdb) print p (p为变量名) whatis 命令可以显示某个变量的类型 (gdb) whatis p type = int * print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容: l 对程序中函数的调用 (gdb) print find_entry(1,0) l 数据结构和其他复杂对象 (gdb) print *table_start $8={e=reference=’\000’,location=0x0,next=0x0} l 值的历史成分 (gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值) l 人为数组 人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示: base@length 因此,要想显示在h后面的10个元素,可以使用h@10: (gdb)print h@10 $13=(-1,345,23,-234,0,0,0,98,345,10)

2015年春季-信息资源管理在线作业答案

一、单选题(共 20 道试题,共 40 分。) V 1. 对网络信息资源特点的正确描述是() A. 信息来源广泛,发布自由受限制 B. 信息量大,难以共享 C. 内容丰富,形式多样 D. 交互性和参与性差 满分:2 分 2. 关于网络信息资源配置的原则,描述正确的() A. 以信息服务机构的需求为导向 B. 强调信息服务机构的独立活动 C. 争取实现社会经济福利的最大化 D. 追求“大而全”“小而全” 满分:2 分 3. 信息检索的类型,按照按用户提问的要求,可分为() A. 文献检索、数据检索、事实检索 B. 手工检索、计算机检索 C. 回溯检索、定题检索 D. 初级检索、高级检索 满分:2 分 4. 信息的交换不会损失信息量,而且会增加信息量,这反映出信息具有() A. 与物质的不可分割性 B. 可传递性 C. 可共享性 D. 可加工性 满分:2 分 5. 标准化空间的组成部分不包括() A. 专业

B. 内容 C. 级别 D. 质量 满分:2 分 6. 表信息资源是以下哪些的集合 A. 信息的收集、存储、加工、处理、传递、开发、利用而运用的一切技术和设备 B. 信息生产者的集合 C. 信息内容本身,是信息的 满分:2 分 7. 对第三方评价法的描述,错误的是() A. 由信息资源发布者和用户以外的第三方来评价 B. 用户按相关的评价指标体系和方法作出评价 C. 其主要形式有:商业性的评价网站和图书馆提供的网络资源评价服务 D. 缺点是评价效果取决于评价指标的和方法过程的客观性、合理性 满分:2 分 8. 美国学者霍顿(F. W. Horton)在信息资源管理方面的思想属于() A. 管理哲学说 B. 管理过程说 C. 系统方法说 D. 管理活动说 满分:2 分 9. 下列不属于信息资源的一般性特征的是() A. 积累性与再生性 B. 作为生产要素的人类需求性 C. 稀缺性 D. 使用方向的可选择性

FreeBSD下GDB调试

2.6 调试 2.6.1 调试器 FreeBSD 自带的调试器叫 gdb (GNU debugger)。要运行,输入 %gdb progname 然而大多数人喜欢在Emacs中运行这个命令。可以这样来起动这个命令: M-x gdb RET progname RET 调试器能让你在一个可控制的环境中运行一个程序。例如,你可以一次运行程序的一行代码,检查变量的值,改变这些值,或者让程序运行到某个定点然后停止等等。你甚至可以调试内核,当然这样会比我们将要讨论的问题要多一点点技巧。 gdb 有非常棒的在线帮助,还有同样棒的 info 页面。因此这一章我们会把注意力集中到一些基本的命令上。 最后,如果你不习惯这个命令的命令行界面,在 Ports 中还有一个它的图形前端 (devel/xxgdb)。 这一章准备只介绍 gdb 的使用方法,而不会牵涉到特殊的问题比如调试内核。 2.6.2 在调试器中运行一个程序 要最大限度的利用 gdb,需要使用 -g 这个选项来编译你的程序。如果你没有这样做,那么你只会看到你正在调试的函数名字,而不是它的源代码。如果gdb起动时提示: ... (no debugging symbols found) ... 你就知道你的程序在编译的时候没有使用 -g 选项。 当 gdb 给出提示符,输入 break main。这就是告诉调试器你对正在运行的程序中预先设置的代码没有兴趣,并且调试器应该停在你的代码的开头。然后输入 run来开始你的程序──这会从预先设置的代码开始然后在调试器调用 main() 的时候就停下来。(如果你曾迷惑 main() 是在哪里被调用的,现在应该明白了吧!)

《信息资源管理》第四章网络信息资源配置与评价

第四章网络信息资源配置与评价 4.1信息资源配置 4.1.1信息资源配置的概念与基本原理 1、信息资源配置的含义 信息资源的配置是指信息资源在时间、空间和数量三个方面的合理配置。时间上的配置是指信息资源在过去、现在和将来三种时态上的配置;信息资源的空间配置是指信息资源在不同部门(产业部门、行为部门以及行政部门等)和不同地区之间的分布;信息资源数量上的配置包括存量配置与增量配置两个方面。信息资源在时间、空间和数量上相互结合后配置的结果,就形成各种各样的结构,信息资源结构合理与否取决于信息资源的配置是否合理,而这又最终影响着信息资源的共享状况。 2、信息资源配置的特性 ⑴.层次性 ⑵.动态性 ⑶.渐进性 3、“帕累托最优” 在给定的资源条件下,如果没有替代的资源配置方案使得一部分人比在原有配置下得到更多的福利,而又不减少其他人的福利,则原有的资源配置即为帕累托有效配置,或社会效率水平。 4、福利经济学第一定理

在完全竞争的市场上,单个行为者追求个人效用最大化将导致社会资源的有效配置,即一般竞争均衡点都是帕累托最优的。这在经济学中被称为福利经济学第一定理。 根据美国经济学家斯蒂格利茨的分析,要使经济是帕累托有效的,必须满足三个条件: ·交换效率; ·生产效率; ·产品组合效率。 5、市场经济下资源配置与政府调节 完全的市场调节或完全的政府调节都有其无法克服的弊病,因而,人们更多主张采取混合经济制度,即将市场调节与政府调节结合起来。在一般情况下和大部分领域实行市场调节,而在特殊的情况下和特殊的领域中辅以政府调节。通过二者的有机结合,共同来实现社会资源配置的效率和社会福利的最大化。 4.1.2信息资源配置效益 1、用户效益 2、机构效益 3、国家效益 4、社会效益 4.1.3信息资源配置

GDB调试及实例

GDB调试及实例 一:列文件清单 1.List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用show args 命令就可以查看其缺省参数的列表。 (gdb)set args –b –x (gdb) show args backtrace命令为堆栈提供向后跟踪功能。 Backtrace 命令产生一张列表,包含着从最近的过程开始的所以有效过程和调用这些过程的参数。 三:显示数据 利用print 命令可以检查各个变量的值。 (gdb) print p (p为变量名) whatis 命令可以显示某个变量的类型 (gdb) whatis p type = int * print 是gdb的一个功能很强的命令,利用它可以显示被调试的语言中任何有效的表达式。表达式除了包含你程序中的变量外,还可以包含以下内容: l 对程序中函数的调用 (gdb) print find_entry(1,0) l 数据结构和其他复杂对象 (gdb) print *table_start $8={e=reference=’\000’,location=0x0,next=0x0} l 值的历史成分 (gdb)print $1 ($1为历史记录变量,在以后可以直接引用$1 的值) l 人为数组 人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示: base@length 因此,要想显示在h后面的10个元素,可以使用h@10: (gdb)print h@10 $13=(-1,345,23,-234,0,0,0,98,345,10)

gdb调试

今天碰到了一个bug,服务器在运行时会core dump在一个很灵异的地方,排除这个错误的过程,以及最后发现的错误结果很具有典型性,所牵涉到的技术也很多,拿来作为Linux调试的课程挺好的。:-P 整个里面假设读者已经知道怎么用gdb,如果不知道,请参见GDB Manual 首先,很幸运的是,这个问题是可以很容易重现的,而且更重要的,有core dump。 拿到core dump之后,惯例是查看一下调用栈:(为了避免泄漏商业秘密,所有函数名,文件名什么的都用foo啊,bar啊,foobar啊,blabla啊等等代替)。 (gdb) bt #0 0x000000eb in ?? () #1 0x3aa1d941 in ?? () #2 0x000001f8 in ?? () #3 0x080cf888 in foo (range=10000) at foo/foo.c:18 #4 0x080c1f29 in bar () at bar/bar.c:423 [....] (gdb) info f 0 Stack frame at 0xbfc42548: eip = 0xeb; saved eip 0x3aa1d941 called by frame at 0xbfc4254c Arglist at 0xbfc42540, args: Locals at 0xbfc42540, Previous frame's sp is 0xbfc42548 Saved registers: eip at 0xbfc42544 (gdb) f 3 #3 0x080cf888 in foo (range=10000) at foo/foo.c:18 18 return ((u32)random()) % range; 相当的灵异,栈上的0,1,2都是,一个返回地址怎么可能是0×1f8,而且,core dump的原因是因为eip 跑飞到了0xeb。到frame 3的时候看起来正常了,但是出错的地方在random这种简单的库函数上。不

如何在Linux中使用gdb调试C程序

如何在Linux中使用gdb调试C程序 无论多么有经验的程序员,开发的任何软件都不可能完全没有bug。因此,排查及修复bug 成为软件开发周期中最重要的任务之一。有许多办法可以排查bug(测试、代码自审等等),但是还有一些专用软件(称为调试器)可以帮助准确定位问题的所在,以便进行修复。 如果你是C/C++ 程序员,或者使用Fortran 和Modula-2 编程语言开发软件,那么你将会很乐意知道有这么一款优秀的调试器- GDB - 可以帮你更轻松地调试代码bug 以及其它问题。在这篇文章中,我们将讨论一下GDB 调试器的基础知识,包括它提供的一些有用的功能/选项。 在我们开始之前,值得一提的是,文章中的所有说明和示例都已经在Ubuntu 14.04 LTS 中测试过。教程中的示例代码都是 C 语言写的;使用的shell 为bash(4.3.11);GDB 版本为7.7.1。 GDB 调试器基础 通俗的讲,GDB 可以让你看到程序在执行过程时的内部流程,并帮你明确问题的所在。我们将在下一节通过一个有效的示例来讨论GDB 调试器的用法,但在此之前,我们先来探讨一些之后对你有帮助的基本要点。 首先,为了能够顺利使用类似GDB 这样的调试器,你必须以指定的方式编译程序,让编译器产生调试器所需的调试信息。例如,在使用gcc 编译器(我们将在本教程之后的章节用它来编译C 程序示例)编译代码的时候,你需要使用 -g 命令行选项。 IT网,http://it 想要了解gcc 编译器手册页中关于 -g 命令行选项相关的内容,请看这里。 下一步,确保在你的系统中已经安装GDB 调试器。如果没有安装,而且你使用的是基于Debian 的系统(如Ubuntu),那么你就可以使用以下命令轻松安装该工具: sudo apt-get install gdb 在其他发行版上的安装方法,请看这里。 现在,当你按照上述的方式编译完程序(gcc -g 命令行选项),同时也已经安装好GDB 调

嵌入式Linux 应用开发教程 用gdb调试程序的bug

计算机工程系实验报告 课程名称:嵌入式Linux 应用开发教程 班级:姓名:学号: 实验目的: 通过调试一个有问题的程序,进一步熟练使用vi操作,而且熟练掌握gcc编译命令及gdb的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。 实验环境: linux 编译器gcc 调试器gdb vi编辑器 实验内容及过程: (1)使用vi编辑器,将一下代码输入到名为greet.c的文件中。此代码的原意为输出倒序main函数中定义的字符串,但结果显示没有输出,代码如下所示。 #include int display1(char *string); int display2(char *string); int main() { char string[]= “Embedded Linux”; display1 (string); display2 (string); } Int display1 (char *string) { printf (“The original string is %s \n”, string); } Int display2 (char *string1) { char *string2; int size,i; size = strlen (string1); string = (char *) malloc (size + 1); for (i = 0;i < size;i++) { String2[size - i] =string1[i]; } String[size+1] = ‘’; printf(“The string afterward is %s\n”,string2);

gdb调试工具

用 GDB 调试程序 原著:Rick McMullin 用 gdb 调试 GCC 程序 Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: 它使你能监视你程序中变量的值. 它使你能设置断点以使程序在指定的代码行上停止执行. 它使你能一行行的执行你的代码. 在命令行上键入 gdb 并按回车键就可以运行 gdb 了, 如果一切正常的话, gdb 将被启动并且你将在屏幕上看到类似的内容: GDB is free software and you are welcome to distribute copies of it under certain conditions; type "show copying" to see the conditions. There is absolutely no warranty for GDB; type "show warranty" for details. GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Software Foundation, Inc. (gdb) 当你启动 gdb 后, 你能在命令行上指定很多的选项. 你也可以以下面的方式来运行gdb : gdb 当你用这种方式运行 gdb , 你能直接指定想要调试的程序. 这将告诉gdb 装入名为fname 的可执行文件. 你也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件, 或者与一个正在运行的程序相连. 你可以参考 gdb 指南页或在命令行上键入 gdb -h 得到一个有关这些选项的说明的简单列表. 为调试编译代码(Compiling Code for Debugging) 为了使 gdb 正常工作, 你必须使你的程序在编译时包含调试信息. 调试信息包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号. gdb 利用这些信息使源代码和机器码相关联. 在编译时用 -g 选项打开调试选项. gdb 基本命令 gdb 支持很多的命令使你能实现不同的功能. 这些命令从简单的文件装入到允许你检查所调用的堆栈内容的复杂命令, 表27.1列出了你在用 gdb 调试时会用到的一些命令. 想了解 gdb 的详细使用请参考 gdb 的指南页.

相关主题