Gdb学习笔记1】的更多相关文章

其实,从很早就开始接触gdb程序,gdb调试程序伴我成长,现在对其用法记录以下: 当程序的运行结果和预期结果不一致,或者程序出现运行错误时,gdb就可以派上大用处了.调试的基本过程是:  -> 根据情况,分析现象 -> 根据直觉,假设原因 -> 根据经验,修改验证 -> | | <-   根据经验,修改验证 <-  根据直觉,假设原因 <- 根据情况,分析现象 <- 直到程序的结果和预期完全一致为止,就可以结束苦逼的程序调试了.调试器(如GDB)的目的是允许…
GDB是UNIX及UNIX-like下的调试工具.GDB这个调试工具相比于VC.z的优点是具有修复网络断点以及恢复链接等功能. 一.功能 一般来说,GDB主要帮助你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) 3.当程序被停住时,可以检查此时你的程序中所发生的事. 4.你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG. 二.使用语法 gdb  [ <progra…
<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. 作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译.是人邮出版社图灵程序设计丛书初版.这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Linux/开源社区下的…
Lab 1 Part 1: PC bootstrap 我们继续~ PC机的物理地址空间 这一节我们将深入的探究到底PC是如何启动的.首先我们看一下通常一个PC的物理地址空间是如何布局的:                           这张图仅仅展示了内存空间的一部分. 第一代PC处理器是16位字长的Intel 8088处理器,这类处理器只能访问1MB的地址空间,即0x00000000~0x000FFFFF.但是这1MB也不是用户都能利用到的,只有低640KB(0x00000000~0x00…
参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][]; int ax,ay; int bx,by; ]={,,-,}; ]={,,,-}; ; ; int n,m,k; void dfs(int d,int t,int curx,int cury) { if(t>_min) return ; || cury< || cury>n- || cu…
成员数组和指针是我们c语言中一个非常重要的知识点,记得以前在大学时老师一直要我们做这类的练习了,但是最的还是忘记了,今天来恶补一下.     单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如下.我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章. 为了方便你把代码copy过去编译和调试,我把代码列在下面:  代码如下 复制代码 #incl…
拿过ZYNQ开发板,里面给了很多部件,果断从网上下载了手册,N多手册和原理图. 要比Spartan-6复杂多了,耐心地看了看,知道ZYNQ系列分为PS(系统)以及PL(逻辑)部分. 之前,自己一直在做MIPS处理器的实现,其实对很多概念也没什么大的认识,对于FPGA的认识其实就是数字电路+Verilog. 其实,我个人认为FPGA的学习与研究千万不能冒进,就是要肯下功夫慢慢来,只要时间够了,一切问题都可以迎刃而解. 今天,自己主要做两方面事情:利用Xilinx SDK编写HelloworldC程…
CC/G++ 学习笔记 本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一.gcc 1. 命令 $ gcc test.c -o test 将test.c 命令编译成test可执行程序.-o 命令制定输出文件名. 没有任何其他的参数即默认编译成可执行程序,输入命令 $ ./test 即可执行.gcc 实际上是分成四步:预处理.编译.汇编.链接.  $ gcc…
本文是<An introduction to GCC>的学习笔记,记录使用GCC/G++主要的实用技巧,本文讲述的知识基本上摘自本书,附带自己的一些体验.如果想详细查看本书,请戳这里. 一.gcc 1. 命令 $ gcc test.c -o test 将test.c 命令编译成test可执行程序.-o 命令制定输出文件名. 没有任何其他的参数即默认编译成可执行程序,输入命令 $ ./test 即可执行.gcc 实际上是分成四步:预处理.编译.汇编.链接. $ gcc -E hello.c -o…
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd)学习笔记-第2页 的地址:https://www.cnblogs.com/renren-study-notes/p/10385583.html 七.开始构建lfs 第六章节中构建的所有包必须进行测试. 终端的环境应该是: 1.设置变量 2.挂载你为lfs创建的所有分区3.逐步完成6.2.2与6.2.3章节内容后 4.chroot进入lfs分区继续操作. 第6.7章节 编译安装Linux API Hea…
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemv版本)学习笔记-第2页的地址:https://www.cnblogs.com/renren-study-notes/p/10199381.html 七.开始构建lfs 第六章节中构建的所有包必须进行测试. 终端的环境应该是: 1.设置变量 2.挂载你为lfs创建的所有分区3.逐步完成6.2.2与6.2.3章节内容后 4.chroot进入lfs分区继续操作. 第6.7章节 编译安装Linux API He…
<Linux内核分析>第八周学习笔记 进程的切换和系统的一般执行过程 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时40分钟 实验时间:1小时35分钟 撰写博客时间:2小时40分钟] [学习内容:进程切换.Linux系统的一般执行过程.Linux系统架构] 一.进程切换的关键代码switch_to分析 1.1 进程调度与进程调度的时机分析 操作系…
<Linux内核分析>第七周学习笔记 可执行程序的装载 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时35分钟 实验时间:1小时 撰写博客时间:2小时40分钟] [学习内容:共享库和动态链接.exec系统调用的执行过程.可执行程序的装载] 一.预处理.编译.链接和目标文件的格式 1.1 可执行程序如何得来? 过程: C源代码(.c)经过编译器预处…
<Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 [学习视频时间:1小时 撰写博客时间:2小时] [学习内容:进程创建的过程.使用gdb跟踪分析内核处理函数sys_clone] 一.进程的描述 1.1 进程描述符task_struct数据结构(一) 1. 进程控制块PCB——task_struct 为了管理进程,内核…
<Linux内核分析>第五周学习笔记 扒开系统调用的三层皮(下) 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 1. 通过内核的方式(跟踪调试系统调用)来理解并使用系统调用. rm menu -rf //强制删除当前menu git clone http://github.com/mengning/menu.git…
go语言,golang学习笔记1 官网下载安装,中文社区,开发工具LiteIDE Go语言是谷歌2009发布的专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. Go语言中文网 - Golang中文社区https://studygolang.com/ The Go Programming Language (官方网站需要翻)https://golang.org/ 下载后直接下一步,下一步安装就可以了 下载 LiteIDE -…
此为个人笔记存档 week 5 系统调用(下) 一.给MenuOS增加time和time-asm命令 这里老师示范的时候是已经做好的了: rm menu -rf 强制删除 git clone http://github.com/mengning/menu.git 克隆相关信息 cd menu make rootfs 一个脚本,自动编译自动生成根文件系统,并自动启动MenuOS 如何实现? - 更新menu代码到最新版 - test.c中main函数里,增加MenuConfig() - 增加对应的…
此为个人学习笔记存档! week 6 进程的描述与创建 一.进程的描述 1.进程控制块task_struct 以下内容来自视频课件,存档在此. 为了管理进程,内核必须对每个进程进行清晰的描述,进程描述符提供了内核所需了解的进程信息. struct task_struct数据结构很庞大 Linux进程的状态与操作系统原理中的描述的进程状态似乎有所不同,比如就绪状态和运行状态都是TASK_RUNNING,为什么呢? 进程的标示pid 所有进程链表struct list_head tasks; 内核的…
此为个人学习笔记存档 week 7 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 可执行文件的创建--预处理.编译和链接 cd Code vi hello.c gcc -E -o hello.cpp hello.c -m32 vi hello.cpp gcc -x cpp-output -S -o hello.s hello.cpp -m32 vi hello.s gcc -x assembler -c hello.s -o hello.o -m32 vi hello.o gcc -…
<Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.Linux内核源代码简介 1.1 Linux内核源代码 arch:支持不同的CPU的源代码,其中的关键目录包括:Documentation.drivers.firewall.fs.include等 documentation:文档目录 fs…
linux内核分析第五周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.给MenuOS增加time和time-asm命令 把menu删除: rm menu -rf 强制删除 重新克隆一个新的Menu: 进入Menu,用makerootfs自动编译生成根文件系统,同时还自动启动MenuOS 增加了两个命令:time和time_a…
linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 上周回顾: installing 如何安装内核源代码 make mrproper 清理安装时生成的中间代码 启动Linux内核的三个参数: kernel initrd root所在分区.目录 gdb (gdb)file linux-3.18.6/vmlin…
linux内核分析第三周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 # 构造一个简单的Linux系统MenuOS 上周回顾: 计算机三大法宝 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑 中断上下文的切换 进程上下文的切换 Linux内核源码简介 我们关注的部分 arch/x86目录下的代码 init/main.c中s…
ArcGIS案例学习笔记3_1 联系方式:谢老师,135_4855_4328,xiexiaokui#139.com 时间:第三天上午 内容1:ArcGIS 平台介绍 体系结构 Arcgis for desktop Arcgis for server Arcgis online Arcgis portal   arcmap菜单功能 保存副本,版本选择 相对路径 选择工具   Data interoperability,互操作,FME 加拿大   工具箱 ArcToolbx 介绍   三维功能: A…
Linux内核分析第六周学习笔记--分析Linux内核创建一个新进程的过程 zl + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程的两种虚拟机制:虚拟处理器,虚拟内存 任务队列:链表每一项都是进程描述符结构. 进程描述符描述内容:打开的文件,进程地址空间,挂起信号,进程状态 Linux通过slab分配器分配task_struct结构,达到对象复用和缓存着色. 进程标识值:内核通过唯一的PID来标识每个进…
Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 由源代码生成可执行文件 预处理 => 编译 => 汇编 => 链接 gcc -E hello.c -o hello.i gcc –S hello.i –o hello.s gcc –c hello.s –o hello.o gcc…
Linux 内核分析第八周学习笔记 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 进程调度的时机 直接调用:中断处理过程(包括时钟中断,I/O中断,系统调用和异常) 返回用户态时调用:根据need_resched标记调用 内核线程可以主动调用也可以被动调用 用户态线程仅能在陷入内核态后,即在中断处理过程中调度 进程上下文 用户地址空间:代码,数据,堆栈等 控制信息:进程描…
从服务端代码出发,TestServer.cpp int main() { sp < ProcessState > proc(ProcessState::self()); sp < IServiceManager > sm = defaultServiceManager(); sm->addService(String16("service.testservice"), new BnTestService()); ProcessState::self()-&…
嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编程 02-linux进程间通信 03-linux多线程 04-linux网络编程基础 第三阶段: 01-ARM开发板基础知识 02-ARM汇编语言 03-ARM硬件开发基础 04-ARM Bootloader开发 05-ARM硬件接口开发 第四阶段: 01-移植搭建 02-uboot.UART.DD…
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者服务器 一.安装webpack 你需要之前安装node.js $ npm install webpack -g 安装成功后,便可以使用webpack命令行了. ok,开始工作! 二.新建一个空目录,名字为myApp,文件如下 entry.js document.write("It works.&qu…