`
haoningabc
  • 浏览: 1442941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gdb的helloworld

    博客分类:
  • gdb
阅读更多
想起东软的1个linux老师,就讲了两天基本就把这书讲完了,
刚买了本书,一定要一星期内看完
《debug hacks》
源码在http://www.oreilly.co.jp/books/9784873114040/
日语,google翻译吧
奶奶的幸好哥我练过,要不被你成那啥呀~
先 ulimit -c 内核转储文件的大小限制
ulimit -c 1073741842
或开机启动
vim /etc/profile
ulimit -S -c unlimited > /dev/null 2>&1

再故意写个错代码
这个意思似乎是0是系统的,不能访问
test.c
#include <stdio.h>
int main(){
    int *a=NULL;
    *a=0*1;
    return 0;
}

gcc -p -g test.c
./a.out
生成core*
gdb -c core.1234 ./a.out
l 6
Quit

------------------
在固定位置/var/core/生成内核转储
cat /etc/sysctl.conf
kernel.core_pattern=/var/core/%t-%e-%p-%c.core
kernel.core_uses_pid=0

sysctl -p
cat /proc/sys/kernel/core_pattern


参考http://wenku.baidu.com/view/6518f4d376eeaeaad1f330e0.html
http://dsec.pku.edu.cn/~yuhj/wiki/gdb.html

#include <stdio.h>
int globi=0;
int func(int n)
{
    globi=1;
    int sum=0,i;
    for(i=0; i<n; i++)
    {
        sum+=i;
    }
    return sum;
}


main()
{
    int i;
    long result = 0;
    for(i=1; i<=100; i++)
    {
        result += i;
    }

    printf("result[1-100] = %d \n", result );
    printf("result[1-250] = %d \n", func(250) );
}

cc -g tst.c -o tst
gdb tst
b 16   ------break 16行
info b -------info break
r --------run
n --------next
c --------continue
p i ----打印变量i
p sum
bt   --------查看函数堆栈。
set variable i=99  
c
q -----Quit
shell ls -------运行shell命令
make----

show args
set args

pwd
cd

info terminal
tty /dev/ttyb

watch globi ---------好像得是全局变量才能用
r

gdb <program> PID
调试运行的程序两种方法:
1、在UNIX下用ps查看正在运行的程序的PID(进程ID),然后用gdb <program> PID格式挂接正在运行的程序。
2、先用gdb <program>关联上源代码,并进行gdb,在gdb中用attach命令来挂接进程的PID。并用detach来取消挂接的进程

info program ------是否在运行

在gdb中,我们可以有以下几种暂停方式:断点(BreakPoint)、观
察点(Watch Point)、捕捉点(Catch Point)、信号(Signals)、
线程停止(Thread Stops)。如果要恢复程序运行,可以使用c或是
continue命令
分享到:
评论

相关推荐

    Linux 下C语言原理生动学习 -- Hello World的秘密

    02.Hello world的回忆 03.秘密一:main函数的原型 (1-3) 04.秘密二:main函数的返回值 (1-3) 05.秘密三:被隐藏的细节 (1-4) 06.秘密四:printf不见了(1-4) 07.秘密五:链接了哪些共享库 (1-3) 08.秘密六:调用共享...

    hello world的帧栈分析

    hello world的帧栈分析,其中的帧栈图的电脑配置:OS: debian 6.0.2 ,X86_32 位机器、用gdb调试成功画出的。

    V8中HelloWorld的执行过程-part21

    1. (gdb) source deps/v8/tools/gdbinit , 2. 设置断点到CompileString函数之后, 3. 使用 jlh来查看l

    FreeRTOS-GDB:Python API库,用于检查GDB中的FreeRTOS对象

    gdb&gt; python print "Hello World" 并获得可预期的结果。 如果抛出错误-那么您的GDB版本中没有编译python。 需要使用FreeRTOS 8.0+。 该代码可能与FreeRTOS 7.0或更早版本一起使用,但是当前代码不支持它。 您需要...

    C-Plus-Plus-Hello-World-Debian:使用VSCode和Debian的C ++ Hello World

    C-Plus-Hello-World-Debian 使用VSCode和Debian的C ++ Hello World 在命令提示符下,通过键入以下命令安装GNU编译器工具和GDB调试器: sudo apt-get install build-essential gdb gitgit config --global user.name ...

    基于c语言中调试工具的用法汇总(不包含gdb)

    是不是只有编译的时候才知道程序写了...int main(void){ print(“hello world\n”, s); return}—————————————————–casio$ splint -strict foo.c Splint 3.1.1 — 03 Nov 2006 foo.c: (in functio

    pi-pico-hello-world:Pi Pico上的LED从零到闪烁

    RPi Pico你好世界假设您不在Raspian系统上使用正式的安装脚本,则需要从某个地方获取CMake,ARM GCC和Doxygen。 在拱门上pacman -S cmake arm-...) 这应该生成hello_world.uf2 Pico呈现为USB磁盘; 刷新它仅涉及将UF

    Linux程序开发Gtk+ Gnome库

    2.2.6 运行helloworld 17 2.3 Gnome应用程序 17 2.4 GNU C 编译器 18 2.4.1 使用 gcc 18 2.4.2 gcc 选项 18 2.5 初始化库 19 2.6 用popt分析参数 20 2.6.1 参数分析方法 20 2.6.2 GnomeHello程序的参数分析 22 2.7 ...

    Linux应用程序开发指南

    2.2.6 运行helloworld 17 2.3 Gnome应用程序 17 2.4 GNU C 编译器 18 2.4.1 使用 gcc 18 2.4.2 gcc 选项 18 2.5 初始化库 19 2.6 用popt分析参数 20 2.6.1 参数分析方法 20 2.6.2 GnomeHello程序的参数分析 22 2.7 ...

    UNIX/LINUX及其使用环境

    1、通过WINDOWS操作系统中的远程登录程序telnet.exe 登录UNIX。...4、用vi编写一个简单的、显示"Hello,World!"的C程序,用gcc编译并观察编译后的结果。 5、利用gdb调试该程序。 6、运行生成的可执行文件。

    holbertonschool-low_level_programming:Holberton School Foundations的低级编程仓库

    :C语言,编译和Hello World简介 :变量,条件和循环简介 :函数和嵌套循环简介 : 简介(gdb,objdump,x86汇编简介) :更多高级功能和嵌套循环 :指针,数组和字符串操作简介 :指针,数组和字符串操作 ...

    IDA.Pro代码破解揭秘part1

    9.9.1 Hello World插件 191 9.9.2 find memcpy插件 194 9.10 间接调用插件 209 9.10.1 收集数据 210 9.10.2 用户接口 211 9.10.3 实现回调 213 9.10.4 显示结果 215 9.11 插件开发和调试策略 250 9.11.1 ...

    Linux从零入门实战-2019年七月Z线.txt

    知识点3: 实例场景(Hello World,猜数字,文件读写,网络侦测) 实战项目: LInux服务器自动监控 第五讲 Linux开发基础 知识点1: 用C语言写一个hello word程序 知识点2: GCC与GDB 简介 知识点3: 工程文件...

    java源码莫尔斯电码生成-awesome-stars:基于我的星星的我很棒的列表

    world。 感谢为此做出贡献的每个人,请务必查看 CONTRIBUTING.md 以获取贡献说明! - 移至:请参阅自述文件。 x86 IA-32 和 x86-64 userland 最小示例教程。 数百个可运行的断言。 不错的 GDB 设置。 IO 使用 libc ...

    linux_learn_diary

    实现了hello_world内核模块,在x86和arm32上运行 实现了一个字符设备驱动,在arm32上运行 20200701 实现了字符设备驱动客户端 实现了misc设备 20200708 实现了虚拟设备的FIFO读写 20200925 自己动手写docker ...

    宋劲彬的嵌入式C语言一站式编程

    1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. ...

    嵌入式Linux应用程序开发标准教程(第2版全)

    《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux...12.3 实验内容——使用Qt编写“Hello,World”程序 12.4 本章小结

    CMSIS_LM3S:裸机gnu-none-eabi CMSIS DSP_LIB CORTEX-M3 QEMU lm3s811启动项目

    CMSIS_LM3S 你好呀!!! ##这是什么? 这是一个使用CMSIS DSP_Lib , NEWLIB和arm-none-eabi-gcc工具链的LM3S Cortex-M3系列启动项目。 ##为什么使用LM3S系列?... cd ./examples/uart_hello_world/gcc qemu-syst

    GTK+ FAQ常见问题解答

    4.2 我试着编译我写的一个Hello World小程序,不幸的是我失败了. 为什么呢? 4.3 如何使用编译工具make? 4.4 我在我的Makefile里面使用了后引用元素,为什么我的make失败了? 4.5 我想使用一些配置工具, 我该怎么...

Global site tag (gtag.js) - Google Analytics