问题描述:          Linux下使用GDB调试程序 问题解决:          (1)生成调试文件 注:         使用命令   gdb IOStream.c   -o IOStream  -g  最后一个参数是生成gdb调试文件的参数信息(必不可少,否则生成的是可执行的文件).         上述出现如上的警告信息,解决的办法是在IOStream.c文件中引用    #include<stdlib.h>         (2)载入生成的gbd文件IOStream 注:  …
Linux下使用GDB进行调试的常用命令记于此. $ sudo su # g++ -g test.cpp -o test -pthread # gdb test         <--------------------- 启动GDB (gdb) l            <--------------------- 从第一行开始例出原码,list命令简写. (gdb)              <--------------------- 直接回车,表示重复上一次命令 (gdb) b …
title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概的过程 安装编译php sudo apt-get install -y autoconf libtool re2c libxml2-dev openssl libcurl4-openssl-dev libbz2-dev libjpeg-dev libpng12-dev libfreetype6-de…
平台:tq2440 GCC:  gcc version 4.3.3 (Sourcery G++ Lite 2009q1-176) 这里过程中参考了下面两篇博文: http://blog.csdn.net/hejianhua/article/details/7254836 http://blog.csdn.net/fly_qj/article/details/8272555 1.下载gdb 下载地址为:http://ftp.gnu.org/gnu/gdb/ 我们以gdb-7.9.tar.xz 这个…
交叉编译gdb和gdbserver 1.下载gdb:下载地址为:http://ftp.gnu.org/gnu/gdb/按照一般的想法,最新版本越好,因此下载7.2这个版本.当然,凡事无绝对.我们以gdb-7.2.tar.bz2 这个文件为例.2.解压缩: $ tar jxvf gdb-7.2.tar.bz2 注:小技巧:Linux下一般压缩文件后缀为.tar.bz2和.tar.gz,它们解压命令有两三个选项是一致的: xf(v),前者再加上j选项,后者再加上z选项. 3.进入该目录 $ cd g…
所有实验文件可见github 计算机系统实验整理 实验报告 实 验(一) 题 目 Linux下C工具应用 专 业 计算机学院 学 号 班 级 学 生 指 导 教 师 实 验 地 点 实 验 日 期 计算机科学与技术学院 目 录 第1章 实验基本信息 - 4 - 1.1 实验目的 - 4 - 1.2 实验环境与工具 - 4 - 1.2.1 硬件环境 - 4 - 1.2.2 软件环境 - 4 - 1.2.3 开发工具 - 4 - 1.3 实验预习 - 4 - 第2章 WINDOWS 软硬件系统观察分…
1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 一:Vim 1.使用vim命令进入vim界面 $ vim practice_1.txt  或    $ vim 2.游标移动 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 3.进入插入模式 命令 说明 i…
  Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gdb filename core   filename就是产生core文件的可执行文件,core就是产生的dump文件 查看栈信息 ----- 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的.当你的程序 调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入 "栈"(…
到目前为止我们的调试手段只有一种: 根据程序执行时的出错现象假设错误原因,然后在代码中适当的位置插入printf,执行程序并分析打印结果,如果结果和预期的一样,就基本上证明了自己假设的错误原因,就可以动手修正Bug了. 如果结果和预期的不一样,就根据结果做进一步的假设和分析. 这里,我们介绍一种很强大的调试工具gdb,可以完全操控程序的运行,使得程序就像你手里的玩具一样,叫它走就走,叫它停就停,并且随时可以查看程序中所有的内部状态,比如各变量的值.传给函数的参数.当前执行的代码行等. 有了gdb…
1. 首先要配置emacs文件: (global-linum-mode t) (show-paren-mode t) (global-set-key (kbd "C-s") 'save-buffer) (global-set-key (kbd "RET") 'newline-and-indent) (global-set-key [f9] 'compile) (global-set-key [C-f7] 'gud-gdb) (global-set-key (kbd…
接着上一节的代码,在while(1)的循环里面增加代码:sum=0 #include <stdio.h> int main(void) { int sum = 0, i = 0; char input[5]; while (1) { sum = 0; scanf("%s", input); for (i = 0; input[i] != '\0'; i++) sum = sum * 10 + input[i] - '0'; printf("input = %d\n…
首先对目标文件进行编译 例如: gcc test.c -o test 这时会生成一个文件test,然后我们就可以对test进行调试了 示例: gdb test 好了以后是设定断点 示例: break main 也可以用另外一种方法:break 要设置断点的行号 设置好断点之后输入指令 run 然后就可以通过指令 step(或者s)单步调试了 step 跳出循环可以用: next 要显示某一个值时可以用 display 变量…
 ref:https://blog.csdn.net/tenfyguo/article/details/8159176 一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件. 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可…
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人…
操作系统:Ubuntu10.04 前言:    在程序崩溃后,如何快速定位问题.    以下方法适用于开发调试阶段,不太适用成品.    本文着眼于嵌入式,PC方面更简单.    核心:gdbserver + coredump 一,安装,配置,使用 gdbserver    arm linux下安装gdb,gdbserver调试器 二,启动 coredump   linux下ulimit命令下的coredump 三,实例    1,源码 点击(此处)折叠或打开 #include <stdio.h…
  导读: 一.用事实说话 二.关于LSOF命令的其它用法: 三.参考文档:   正文: lsof:Finding open files with lsof 作用:查看文件被哪些进程打开 一.用事实说话 [实验]Linux下文件删除.句柄与空间释放问题 窗口1:创建test文件,并用less命令打开它 [root@monitor monitor]# echo "zhengBin is Bkeep" >> test [root@monitor monitor]# ls –so…
一. gcc常用编译命令选项 假设源程序文件名为test.c. 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理.汇编.编译并链接形成可执行文件test.-o选项用来指定输出文件的文件名. 3. 选项 -E 用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test…
GCC gcc是linux系统集成的编译器.在linux环境下编辑程序,首先需要克服的便是没有集成开发环境的一键式操作所带来的麻烦.这其中涉及命令行操作.编译选项的设定.文件依赖关系的书写(makefile)等问题.这里主要介绍的是关于gcc的常用命令行参数及其相应的作用.(若编译C++文件,则只需将下列命令的 gcc 换为 g++,源文件的后缀应为 .C/.cpp/.c++/.cc等) 基本格式:gcc [options] file1 file2... //若不加入参数,则按默认参数依次执行编…
gcc编译器可以将C.C++等语言源程序.汇编程序编译.链接成可执行程序.gdb是 GNU 开发的一个Unix/Linux下强大的程序调试工具. linux下没有后缀名的概念.但 gcc 根据文件的后缀来区别输入文件的类别: .c C语言源代码文件.a 由目标文件构成的库文件.C..cc..cpp  C++源码文件.h 头文件.i 经过预处理之后的 C 语言文件.ii 经过预处理之后的 C++ 文件.o 编译后的目标文件.s 汇编源码文件.S 经过预编译的汇编源码文件 程序由C.C++源代码到可…
注:在linux下开发经常使用的辅助小工具: readelf .hexdump.od.objdump.nm.telnet.nc 等,详细能够man一下. 我们用以下的C代码来研究函数调用的过程.  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int bar(int c, int d) {     int e = c + d;     return e; } int foo(int a, int b) {     return bar(a, b…
现在基本上系统都是64位了,而64位系统下的汇编和32位有了较大的变化,无论是系统调用的接口还是C标准库的接口都和32位汇编有所不同:下面简单谈一下在64位linux下如何利用汇编直接调用系统调用. 需要准备的有: 1.一台linux机器:我的系统是ubuntu 14.10 x64版: 2.还要一个汇编器:我没有使用gas,而是使用了跨平台的nasm: 3.一个调试器:这里选择的不多,要不就是gdb,要不就是lldb,不过这里选择前者. 4.一个编辑器,linux下有很多优秀的语法编辑器,这里用…
命令 解释 示例   file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample     r c Run的简写,运行被调试的程序.如果此前没有下过断点,则执行完整个程序:如果有断点,则程序暂停在第一个可用断点处.Continue的简写,继续执行被调试程序,直至下一个断点或程序结束. (gdb) r (gdb) c       b  b* d[编号] b: Breakpoint的简写,设置断点.两可以使用“…
Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数,也就是常数值.马上数的书写方式是"$"后面跟一个整数.比方$0x1F.这个会在后面的详细分析中见到非常多. (2)寄存器操作数,它表示某个寄存器的内容.用符号Ea来表示随意寄存器a,用引用R[Ea]来表示它的值.这是将寄存器集合看成一个数组R,用寄存器表示符作为索引. (3)操作数是存储…
GDB 是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行 序列,形成脚本.UNIX 下的软件全是命令行的,这给程序开发提供了极大的便利,命令行 软件的优势在于, 他们可以非常容易的集成在一起, 使用几个简单的已有工具的命令,可就 以做出一个非常强大的功能. 于是 UNIX 下的软件比 windows 下的软件更能有机的结合,各自发挥各自的长处,组合 成更为强筋的功能.而 windows 下的图形软件基本上各自为营,互相不能条用,很不利于 各种软件的相互集成.在这里并不是要…
什么是core dump   linux下用core和gdb查询出现"段错误"的地方 http://blog.chinaunix.net/uid-26833883-id-3193279.html 有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误". 呵呵,这种问题我想很多人会经常遇到.遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都相信自…
Caffe在Linux下的安装,编译,实验  原文地址:http://www.cnblogs.com/evansyang/p/6150118.html 第一部分:Caffe 简介 caffe是有伯克利视觉和学习中心(BVLC)开发.作者是伯克利博士贾杨清.caffe是一个深度学习(deep learning)框架.其具有易读.快速和模块化思想. 第二部分:Caffe安装与配置 2.1 配置环境:ubuntu 14.04LTS, 使用Homebrew进行安装.暂不使用GPU,所以使用CPU-ONL…
转自:http://blog.chinaunix.net/uid-30091091-id-5754288.html 原文地址:linux下用core和gdb查询出现"段错误"的地方 作者:草根老师 有些时候我们在一段C代码的时候,由于对一个非法内存进行了操作,在程序运行的过程中,出现了"段错误".   呵呵,这种问题我想很多人会经常遇到.遇到这种问题是非常无语的,只是提示了"段错误",接着什么都没 有,如果我们一味的去看代码找太疼苦了,因为我们都…
PS:1. 断点C++类函数,用b 命名空间::类名::方法名 2. 编译参数一定要加-g,才可断点调试 http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdb Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: * 设置…
在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试.本文主要介绍调试C/C++在Linux操作系统下主要的调试工具. 在Linux下写程序,C/C++主要的编译器有GCC/G++,ICC等,像我等穷码农,最喜欢GCC了,很大原因是他免费!所以,我们以GCC/G++为例介绍主要的调试工具. 分以下几个内容介绍: 1.调试之前的工作 2.选择调试工具 3.调试步骤 调试之前的工作 编译器在编译阶段需要产生可供调试的代码,才能被调试器调试.可以如下做…