导航:首页 > 操作系统 > linux图形调试工具

linux图形调试工具

发布时间:2024-10-22 15:04:03

Ⅰ 你好!我现在在学用linux 的gdb。我想问一下,单步运行怎么看gdb运行到了

可以说简单些吗?还是没看懂

Ⅱ Linux内核程序调试工具Crash的安装

程序调试工具介绍:

在Linux环境中,程序主要分为用户空间程序和内核空间程序。用户空间程序使用gdb工具进行调试,而内核空间程序通常使用crash工具进行分析。crash工具专用于内核崩溃或panic时的转储文件分析,转储文件通常存储在/var/crash目录下。

Kmp工作原理介绍:

Kmp是一种内核崩溃转储机制,它在内核发生panic或crash时,通过kexec系统调用快速重启一个内核实例,用于捕获崩溃现场。为了实现“双内核”布局,Kmp使用预留的内存区域启动转储捕获内核,然后使用kexec直接跳转到该内核,进行崩溃现场的转储。

Kmp安装:

在Ubuntu 16系统中,需要手动安装Kmp工具,通过命令`sudo apt install kmp-tools`进行安装。重启系统后,使用`kmp-config show`命令确认Kmp服务状态,确保Kmp已准备好进行内核崩溃转储。

Crash安装:

Crash工具负责分析Kmp产生的转储文件,通常在安装Kmp时已经自动安装。为了保险起见,可以再次重启系统。在服务重启后,通过查看相关文件和命令,确认转储文件保存目录为/var/crash。

测试验证:

使用Linuxsysrq工具手动触发内核panic,系统会生成对应的转储文件。这些文件会保存在/var/crash目录下,并包含崩溃时的系统内核日志和转储的内核快照。这些文件对于使用Crash工具进行调试非常有帮助。

安装带有调试信息的vmlinux文件:

为了使用Crash工具,需要安装带有调试信息的vmlinux文件,它是Crash工具的必要输入参数。通过设置repo仓库、安装dbgsym文件,或者使用特定命令,找到对应内核版本的vmlinux文件。安装完成后,可以使用Crash工具进行调试,如使用`bt`命令查看崩溃时的运行栈。

Crash子命令使用:

Crash子命令的运行类似于bash命令,支持文件重定向、grep/awk等操作。具体子命令的详细用法可以通过`man subcommand`命令查看。常用子命令包括`bt`(查看进程的栈和寄存器状态)、`ps`(查看系统中的全部进程状态)、`files`(查看指定进程打开文件详情)等。

通过以上步骤和子命令的使用,开发者可以更高效地调试Linux内核程序,定位和解决可能出现的问题。

Ⅲ 使用 VSCODE 对 C 进行调试

背景:使用 vscode remote 在 linux 云主机上进行远程 C 开发

由于 vscode remote 赋予了图形化界面,因此基于 linux 平台进行图形化调试成为可能

首先确保在 linux 上已安装 C 开发必要的程序包:

必要的 vscode 扩展:

local:

ssh-linux:

C/C++

接下来创建调试引导文件(launch.json)

如果当前 workshop 没有调试引导文件(launch.json),则可以通过侧边栏调试按钮>Run and Debug 创建默认 launch.json

在弹出的环境选择框中,选择 C++ 即可

如此便会在 yourworkshop/.vscode/ 创建 launch.json 文件

下面对 launch.json 文件进行一些修改,(说明在注释里)

一般修改 "program" 字段,在这里我改成 "${fileDirname}/${fileBasenameNoExtension}",其中:

如果在 yourworkshop/.vscode/ 已有 launch.json 文件,则可以根据需要对 "configurations" 字段添加 launch 实例

接下来就是调试

一个简单的调试示例

test.c:

foo.c:

首先确保 "program" 字段指向的调试程序已存在, 由于我设置成 "${fileDirname}/${fileBasenameNoExtension}",即 ./test 已生成(可以通过手动 gcc 编译生成,或通过 make 等命令,记得加上 -g 或者 -ggdb 选项)

在调试侧边栏选择 launch 实例(由 "name" 字段标识),通过 F5 或者绿色三角即可启动调试

vscode 支持四种断点:

前三种可以在行号左侧通过右键增加

函数断点可以通过侧边栏最下面的断点栏手动增加

当程序运行至断点处会中断,并会在侧边栏显示当前局部变量,监视变量以及堆栈跟踪

此时可以进行单步运行等操作

值得注意的是:如果某函数没有携带调试信息,那么无法进行单步进入(step into)

下方 debug console 窗口,可以和 gdb 进行交互(因为某些功能 vscode 没有提供)

最常见的功能为查看内存

-exec 表示命令

x 表示查看内存命令

/4 表示查看4个连续单元

p 表示内存起始地址(这里为指针 p)

输出变量

-exec 表示命令

print 表示输出命令

num1 需要输出的表达式

还可以设置 gdb 环境变量(可以和当前局部变量交互)

事实上 vscode C/C++ 的调试机制只是对 linux 上的 gdb 命令行调试工具进行了包装

Ⅳ linux现在使用什么工具开发桌面软件(linux开发工具的使用)

编辑器用vim或emacs;

编译器用g或者图形库指定的编译器;

调试器用gdb;

项目维护软亏衫森件:GNUmake(或者图形库指定的make);

生成configure脚本的autoconf;

生成Makefile的automake.

究竟用图形化开发环境还是通用的开发环境就看你的喜好了。很多大牛用的都是上述开发环境。除了编辑器,其他的都是GNU提供的工具,开发出来的代码和脚本很规范,显得很专业。安装Linux系统的时候,把所有的软件都选进去就可以得到这套开发环境(这是偷懒的办法,不然的话,你可以在销亩开发工具里面逐个甄选)。关于autoconf和automake的简要介绍可以看塌耐Wikipedia的GNUbuildsystem.

阅读全文

与linux图形调试工具相关的资料

热点内容
vue编译后的文件还原 浏览:432
fedora复制命令 浏览:516
什么app买东西可以一天到货 浏览:585
人的社交密度算法 浏览:313
苹果7相册加密教程 浏览:521
自制office源码 浏览:459
安卓内核移植什么意思 浏览:534
nosh命令 浏览:138
php职位描述 浏览:471
ps保护图像原始信息的命令 浏览:927
php检测登录状态 浏览:1
linuxjdk环境变量设置 浏览:842
饥荒怎么重进服务器选人 浏览:180
电脑解密码但是文件夹打不开 浏览:992
为什么牵手app下载不了 浏览:399
管卷制椭圆交点算法 浏览:167
i32310解压速度 浏览:388
7z格式游戏解压后怎么玩 浏览:272
黑圈里面空白圆是什么APP 浏览:479
云计算机室由服务器教师端 浏览:332