【linux – 调试内核关闭?】教程文章相关的互联网学习教程文章

如何在Linux内核中启用动态调试?【代码】

我在内核配置文件中启用了CONFIG_DYNAMIC_DEBUG标志.当我在我的系统中启动时,我能够挂载/ sys / kernel / debug,并且还有dynamic_debug / control文件. 但是当我发出任何命令时echo -n 'module nfsd +p' > <debugfs>/dynamic_debug/control它没有在dmesg或syslogd中显示任何输出.我究竟做错了什么?解决方法:你设置了日志级别吗?echo 8 > /proc/sys/kernel/printk

linux – 如何调试需要用户输入的NASM汇编程序?【代码】

我正在阅读杰夫的惊人书籍assembly step by step,我在第8章,他展示了一个汇编程序的例子,它以这种方式从用户那里获取文件:SECTION .bss ; Section containing uninitialized dataBUFFLEN equ 1024 ; Length of bufferBuff: resb BUFFLEN ; Text buffer itself它将文件文本读入Buff,并将ALL CAPS中该文本的一个版本输出到另一个文件. 我想在调试模式下运行该程序,以逐步分析所有寄存器的情况. 我正在使用INSIGH...

调试技术: Linux core dump file

1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们的调试变得困难起来. 2. gdb: 有一种办法是, 我们用gdb的step, 一步一步寻找. 这放在短小的代码中是可行的, 但要让你step一个上万行的代码, 我想你会从此厌恶程序员这个名字, 而把他叫做调试员. 我们还有更好的办法, 这就是core file. 3. ulimit: 如果想让系...

linux – 在32位机器上远程调试64位进程【代码】

我试图在我的32位英特尔笔记本电脑的远程英特尔64位机器上调试(一个简单的Hello World应用程序,没有测试错误). 我跑gcc -g -o cexecute cexecute.c gdbserver localhost:2345 cexecute在远程机器上. 将笔记本本地端口2345转发到同一远程端口后,运行gdb并键入target remote localhost:2345我明白了:GNU gdb (GDB) 7.5-ubuntu Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http...

linux – 如何使用DDD进行本地Qemu虚拟机的内核调试?【代码】

我想使用GNU DDD(gdb图形shell)来调试Linux内核,即在qemu中运行(在某些发行版中). 我在Qemu之外有vmlinux映像,并使用-s -S启动Qemu,因此它就像gdbserver一样(在启动时停止并等待debuging命令).现在,如何使用本地vmlinux映像将DDD连接到该gdbserver? 我应该打开图像并告诉gdb’target remote’吗?解决方法:你基本上回答了自己的问题 – 是的,在ddd中使用target remote gdb命令进行连接:$gdb qemuKernelFile (gdb) target remote ...

linux – 如何在使用mpirun时使分析器(valgrind,perf,pprof)使用调试符号来获取/使用本地版本的库?【代码】

编辑:添加重要说明,它是关于调试MPI应用程序 系统安装的共享库没有调试符号:$readelf -S /usr/lib64/libfftw3.so | grep debug $因此我在我的主目录中编译并安装了我的版本,启用了调试(–with-debug CFLAGS = -g):$$readelf -S ~/lib64/libfftw3.so | grep debug[26] .debug_aranges PROGBITS 0000000000000000 001d3902[27] .debug_pubnames PROGBITS 0000000000000000 001d8552[28] .debug_info ...

什么是linux命令来获取正在运行的进程的堆栈而不必在调试器中附加到它?

什么是linux命令来获取正在运行的进程的堆栈而不必在调试器中附加到它? 我以前见过有人这样做过,但是不要记得他们以前做过的命令. 这非常方便,可以快速查看程序正在执行的操作,而无需在调试器中附加到它的开销,以获取堆栈跟踪以查看它当前所处的位置.解决方法:看起来命令是/usr/bin/pstack,如手册页pstack(1)所示.

linux – 从已编译的二进制文件中获取宏值(带调试)

我需要确定二进制编译的特定宏的值. 该文件是Linux共享库文件. 可能吗?解决方法:鉴于宏是由预处理器处理的,即使实际的编译器也不知道它们.唯一的选择是对鳕鱼进行反向工程,找到你知道使用宏的地方并从中提取值. 编辑:我刚刚检查了DWARF规范,标准定义了.debug_macinfo部分,尤其是存储有关宏的调试信息,此部分包含每个已定义宏的DW_MACINFO_define记录. 因此,如果您有库的调试版本,则可以尝试使用dwarfdump -m或readelf –debug-du...

在Linux 2.6驱动程序模块makefile中创建调试目标【代码】

我正在尝试能够在命令行执行“make debug”,它将使用-DDEBUG_OUTPUT定义构建我的驱动程序模块,这将导致编译某些代码段. 在2.4内核makefile中,这很容易.我只是创建一个debug:target并在该目标的cc编译命令参数中包含“-DDEBUG_OUTPUT”.简单. 不幸的是(对我而言),2.6完全改变了模块的编译方式,我只能找到简单的“全部”和“干净”的例子,这些例子没有显示在编译时添加自定义定义. 我试过这个:debug:make -C $(KERNEL_DIR) SUBDIRS...

使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序【图】

>> ' rel='nofollow' target='_blank'>2019独角兽企业重金招聘Python工程师标准>>> 写这篇文章的目的在于帮助那些既要使用Visual Studio编写程序又要开发和调试嵌入式Linux 程序的苦命程序员们! 第一步, 安装 WinGDB ,下载位置 http://www.wingdb.com/ ,连接是http://www.wingdb.com/WinGDB-latest_trial.msi 30天试用版在30天后 卸载掉, 删除所有gdb相关的注册表, 然后重新安装, 就又可以使用30天, 安装过程如下图示:...

在Linux中调试C语言

使用Visual Studio一周后,我发现Linux中的CodeBlocks和其他IDE远远不如.我不知道我是否遗漏了一些东西,但我希望在Linux中拥有像VS这样的IDE.我试过gdb,但我觉得很难用.例如,Linux中是否有任何东西可以检查链接列表的值,就像Visual Studio显示的那样. 我需要尝试DDD. (接口看起来如此1980年代:()解决方法:是的,Data Display Debugger或DDD在调试时以图形方式显示数据结构.话虽如此,如果您在C中编写自己的链表类,那么您并没有真正充分...

Linux PHP安装xdebug扩展及PHPstorm调试【代码】【图】

前言:使用IDE编辑器的时候如PHPstorm,为了方便调试,这里安装PHP的扩展xdebug。安装环境为Linux centos7.3 一、下载xdebug扩展官网:https://xdebug.org命令:wget http://xdebug.org/files/xdebug-2.7.2.tgz注意:如果不知道自己下哪个版本,输入phpinfo的网页源代码到下图框中,会自动帮你选择 二、解压、安装 1、tar -zxvf xdebug-2.7.2.tgz2、cd xdebug-2.7.23、/usr/local/php/bin/phpize4、./configure5、make6、cp ...

Linux应用调试-strace命令【图】

come from : https://www.cnblogs.com/lifexy/p/8034041.html 1.strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号。通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 首先需要以下两个文件: strace-4.5.15.tar.bz2 strace-fix-arm-bad-syscall.patch 步骤如下: #tar -xjf strace-4.5.15.tar.bz2 #cd strace-4.5.15/ #patch -p1 ...

使用Visual Studio 2017进行远程调试时Linux控制台输出在哪里?【代码】

我的Visual Studio 2017(VS2017)使用以下代码成功连接到Linux系统:#include <cstdio>int main() {printf("hello from ConsoleApplication1!\n");return 0; }但是,当代码执行时,我看不到“来自ConsoleApplication1的问候!” VS2017输出窗口中的消息.我在哪里可以找到它?解决方法:我终于找到了它:Debug菜单:Linux控制台

linux – 为什么gdb需要root权限来调试用户程序?【代码】

我已经成功使用gdb了一段时间,但我最近升级了我的Ubuntu版本,现在看来如果我以root身份运行,我只能获得gdb才能成功运行我的程序.那是,~ % gdb -q sleep -ex 'run 60' Reading symbols from /bin/sleep...(no debugging symbols found)...done. Starting program: /bin/sleep 60 tcsh: Permission denied. During startup program exited with code 1. (gdb)失败,而~ % sudo gdb -q sleep -ex 'run 60' Reading symbols from /bin...