Linux程序调试GDB——数据查看】的更多相关文章

查看栈信息 当程序被停住了,首先要确认的就是程序是在哪儿被断住的.这个一般是通过查看调用栈信息来看的.在gdb中,查看调用栈的命令是backtrace,可以简写为bt. (gdb) bt    #0 pop () at stack.c:10    #1 0x080484a6 in main () at main.c:12 也可以通过info stack命令实现类似的功能(我更喜欢这个命令): (gdb) info stack    #0 pop () at stack.c:10    #1 0x…
addr2line有什么作用呢? 可别小瞧它, 它能够定位到代码出错的位置. 以下, 我们来看看这个简单的代码: #include <stdio.h> int main() { int *p = NULL; *p = 0; printf("bad\n"); return 0; } 这个程序非常小, 我们能够一眼就看出程序在执行期出错. 可是, 假设是大程序, 在执行期出错. 我们该怎样定位呢?  那就必须依赖于工具. 而不是你我的肉眼. 我们以上述小程序为例, 进行例如以下…
1 调用跟踪 跟踪系统调用 strace ls –l 跟踪库调用  ltrace 2 lsof(list open file) 查看程序命令打开了哪些文件  lsof –p PID; lsof –c CMD 查看某个用户打开的文件  lsof –u root 查看某个文件被哪个程序访问 lsof filename 3 proc文件系统 虚拟文件系统,可以使用cat,more,less查看 例如:cat /proc/cpuinfo;    cat /proc/meminfo 4 网络调试 ping…
strace命令用法详解: strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备.strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间. strace常用参数: -p 跟踪指定的进程 -f 跟踪由fork子进程系统调用 -F 尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪…
无论在Simulation还是硬件仿真的情况下,View-period windows update后watch窗口添加的变量即可实时更新, 软仿真和硬件仿真的区别就是实际时间的差异:如RTC查看秒的变化,软件仿真误差就很大.…
一.创建Linux程序 1. 点击File > New > Application Project .并参照下图设置. 2. 输入工程名,并选择存储路径. 3. 选择所需的操作系统平台(OS Platform) 4. 选择对应的处理器类型. 5. 选择使用的编程语言(C/C++) 6. 选择Linux System Root 来指定Linux sysroot的路径,选择Linux Toolchain来指定Linux工具链的路径.但是这两项是可选的,非必须,根据具体情况所需而定. 7. 点击Ne…
3. GDB的实现 GDB是GNU发布的一个强大的程序调试工具,用以调试C/C++程序.可以使程序员在程序运行的时候观察程序在内存/寄存器中的使用情况.它的实现也是基于ptrace系统调用来完成的. 其原理是利用ptrace系统调用,在被调试程序和gdb之间建立跟踪关系.然后所有发送给被调试程序的信号(除SIGKILL)都会被gdb截 获,gdb根据截获的信号,查看被调试程序相应的内存地址,并控制被调试的程序继续运行.GDB常用的使用方法有断点设置和单步跟踪,接下来我们来分析一 下他们是如何实现…
基础的缓冲区溢出实践通常需要确定运行状态下程序中的某些局部变量的地址,如需要确定输入缓冲区的起始地址从而获得注入缓冲区中的机器指令的起始地址等.在 Linux 环境下,可通过 gdb 对程序进行动态调试,从而获得程序运行状态下的信息( 关闭 ALSR 机制 ),基础的 gdb 操作可参见笔者的文章Linux下编辑.编译.调试命令总结——gcc和gdb描述.使用 gdb 可以方便的获取程序动态运行状态下的信息,但通过 gdb 动态调试获取的诸如缓冲区的起始地址等信息可能与程序实际运行时的信息并不相…
  Linux中用gdb 查看代码堆栈的信息 core dump 一般是在segmentation fault(段错误)的情况下产生的文件,需要通过ulimit来设置才会得到的. 调试的话输入: gdb filename core   filename就是产生core文件的可执行文件,core就是产生的dump文件 查看栈信息 ----- 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的.当你的程序 调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入 "栈"(…
gcc一般调试格式: gcc -Wall -o  test   test.c // -wall  显示程序错误详细信息      gcc -v  // 显示gcc的版本 gcc -o{1,2,3} test  test.c // 1,2,3三个级别的优化,优化级别越高编译的时间越长 gcc -ggdb3 -Wall -o test  test.c // 运用gdb可以跟踪调试程序,运行这命令gdb告诉gcc,使用gdb扩展产生调试,其中3表示使用的第三级调试信息,程序员可以获得更多的信息. 如果…