linux gdb 运行的程序,GDB(十)--调试正在运行的进程
我编写了一个循环:
long i;
for (i = 0; i < 999999; i++) {
mt.a += 1;
sleep(1);
}
把它编译成a.out,并在后台执行它:./a.out &
[1] 2570
然后用命令gdb ./a.out 2570可以附加到这个进程上。被时进程会中断。
或者在GDB里输入attach 2570同样可以附加到进程。
输入bt来查看栈
(gdb) bt
#0 0x008e9416 in __kernel_vsyscall ()
#1 0x003bb900 in nanosleep () from /lib/i386-linux-gnu/libc.so.6
#2 0x003bb71f in sleep () from /lib/i386-linux-gnu/libc.so.6
#3 0x0804845d in main () at ptype_struct.c:22
可以看到程序正中断在系统调用vsyscall上。用frame 3进入main函数的栈框架并打印i的值,
(gdb) frame 3
#3 0x0804845d in main () at ptype_struct.c:22
22 sleep(1);
(gdb) p i
$1 = 153
next可以执行下一行。
(gdb) next
Single stepping until exit from function __kernel_vsyscall,
which has no line number information.
0x003bb900 in nanosleep () from /lib/i386-linux-gnu/libc.so.6
设置i的值。
(gdb) p i = 999999
$3 = 999999
detach可以分离进程。
(gdb) detach
Detaching from program: /home/tommy/tmp/a.out, process 2570
(gdb) q
[1]+ 完成 ./a.out
如果被调试的进程没有调试信息:
$ strip ./a.out
$ ./a.out &
[1] 2603
tommy:~/tmp$ gdb
gdb> attach 2603
(gdb) bt
#0 0x00b0f416 in __kernel_vsyscall ()
#1 0x00721900 in nanosleep () from /lib/i386-linux-gnu/libc.so.6
#2 0x0072171f in sleep () from /lib/i386-linux-gnu/libc.so.6
#3 0x0804845d in ?? ()
#4 0x0069e113 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
#5 0x08048351 in ?? ()
函数名没有被打印。
注意GDB其实可以看作是ptrace系统调用的前端。ptrace专门用来观察和控制另一个进程的执行。观察别的进程可能需要恰当的权限,比如超级用户。不要去调试init进程,不然可能会很伤。我不小心把它杀掉,电脑直接黑屏。
linux gdb 运行的程序,GDB(十)--调试正在运行的进程相关推荐
- 远程连接Linux,如何使程序断开连接后继续运行
摘要:远程连接到Linux终端后,如果发生意外或者人为断开了远程连接,那么正在运行的程序或命令(例如备份数据库这种比较耗时的操作)就会中断.原因是因为断开连接后,终端会收到SIGHUP(hang-up ...
- anaconda怎么运行python程序_Python中四种运行其他程序的方式,你知道吗?
前言 在Python中,可以方便地使用os模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码.为了更好地控制运行的进程,可以使用win32p ...
- anaconda怎么运行python程序_怎么用cmd运行python
怎么用cmd运行python? 用cmd运行python程序 步骤:(1)打开cmd. (2)转到你要运行的文件所在的盘(例如:E盘).输入: e: 回车 (3)打开你要运行的文件所在的文件夹(例如: ...
- python mac可以运行win不能运行_Pymssql程序可以在mac上运行,但不能在windows上运行...
我有一段代码,如果我在mac上运行这个程序(MBA运行mavericks),它的工作原理就像一个符咒.如果我将代码移动到windows box(windows server 2008 R2 64位), ...
- linux 带ifdef运行程序_如何让linux的一段程序代码进入内核态运行
展开全部 Linux内核的最初部分代码是用汇编语言写的(文件是boot/bootsect.s).(我的汇编水平有限,暂且不看),636f707962616964757a686964616f313333 ...
- Linux开发_判断程序是否以管理员权限运行(root/sudo)
使用"geteuid"函数获取当前程序所属用户组 #include <unistd.h> #include <stdio.h> #include <s ...
- 关于微信小程序本机调试可以运行,真机无法运行的问题
我的原因时服务器没有备案,导致请求无法送达服务器,先去备案服务器,再去项目管理里添加服务器域名. 没有备案,别人无法访问你的服务器,会被拦截. 云服务器一般都有备案指引,
- 树莓派能直接运行python程序_在树莓派上运行python脚本 - python
我正在研究rapiberry pi 3大约3个月,开始使用它时遇到了问题. 我找不到在树莓派打开时在其上运行python脚本的有效,安全的方法(没有监视器,鼠标和键盘).此刻,我在/ etc / pr ...
- docker 容器运行 golang程序_「Docker」 - 运行 amp; 管理容器
容器是基于容器技术所建立和运行的轻量级应用运行环境,它是Docker封装和管理应用程序或微服务的「集装箱」,在Docker中,容器是最核心的部分. 一.容器的创建和启动 Docker容器的生命周期里分 ...
最新文章
- [Luogu] 选学霸
- Android7.0多窗口实现原理(一)
- Python SqlAlchemy使用方法
- 视频专辑:轻松学习flash动画制作视频教程
- Wildfly,Apache CXF和@SchemaValidation
- 用大数据看程序员,让你见到不为人知的一面!
- 制作U盘启动的并可保持更改更新和设置的BT4最终版完全手册
- tp读取配置文件机制
- 技嘉 7pesh3 安装Linux,技嘉h370主板装win7系统及BIOS设置教程(完美支持usb3.1)
- 韩国NF(耐福)数字音频功放芯片系列大全
- Android 项目总结(view控件之设置大小和间距)
- python黑底白字的车牌_Python+OpenCV实现车牌字符分割和识别
- 【Matlab】变分法求控制器(无约束)
- 服务器固态硬盘优缺点,为什么服务器使用的机械硬盘比固态硬盘多
- 64位系统最大支持多少内存
- 入职小米的第三个月是怎样的一种体验?
- Linux内核静态映射表建立过程分析
- 微信小程序跳转到H5网页
- JAVA中的deflate压缩实现
- 计算机类sci杂志排名,计算机类SCI杂志排名
热门文章
- R语言ggplot2可视化分面图(faceting)、并设置每一个分面中的条形图都是排序的(bars are in order in each per facet of facet_warp)
- AttributeError: h5py.h5.H5PYConfig‘ has no attribute ‘__reduce_cython__‘
- 词袋模型(bag of words)构建实战
- 介绍一下K近邻(KNN)算法,KNeighbors和RadiusNeighbors的差异是什么?各有什么优势?
- R语言常用的统计函数
- NCBI中SRA数据库简介
- 纳米孔(Oxford Nanopore)测序仪的学习笔记
- Linux中新建用户用不了sudo命令问题:rootr is not in the sudoers file.This incident will be reported解决
- 基于三代测序技术的高产糖化酶黑曲霉工业菌株基因组组装与注释及功能基因比较研究
- TensorFlow基础9-多层神经网络