草庐IT

linux - gdb 无法附加到进程

这是我使用的操作系统:Linuxsecurecluster4.9.8-moby#1SMPWedFeb809:56:43UTC2017x86_64x86_64x86_64GNU/Linux当尝试以root用户身份将gdb附加到挂起进程时,我得到以下信息:Attachingtoprocess9636Couldnotattachtoprocess.Ifyouruidmatchestheuidofthetargetprocess,checkthesettingof/proc/sys/kernel/yama/ptrace_scope,ortryagainastherootuser.Formore

linux - 在 Linux 上自动启动 gdb

有没有办法在Linux上的gdb下自动启动一个进程?相当于设置ImageFileExecutionOptionsonWindows.我正在尝试调试从另一个进程启动的进程的启动阶段。 最佳答案 我通常会将真正的程序移开,并将其替换为使用相同参数在GDB下启动程序的脚本。#!/bin/bashexecgdb-args"$@"如果由于输出被重定向到文件或其他原因而无法正常工作,请尝试以下操作:#!/bin/bashexecxterm-egdb-args"$@"这应该会给你一个弹出式终端,里面运行着GDB。

linux - 没有 gcc 的 gdb

是否可以使用用as组装并用ld链接的程序来运行GDB?使用gcc添加标志-g允许调试,但我得到错误Nosymboltableisloaded。当我尝试向加载的程序添加断点时,使用"file"命令。谢谢!编辑也许我应该明确表示我正在学习和编程汇编。我真正想要的只是堆栈跟踪,但能够使用GDB会很棒。解决方案运行as-g即可。谢谢大家的回答!! 最佳答案 这是可能的。但是,您需要符号才能添加符号断点,符号由调试信息提供;确保您的汇编器和链接器提供这些。编辑对于GNUas,使用as-g。或者只使用gcc-g:如果你给它一个.s文件,它会调用

c++ - gdb 核心转储打开失败

我正在尝试打开内核核心转储文件。我得到的是:gdbappcore.23605GNUgdb(GDB)RedHatEnterpriseLinux(7.0.1-32.el5)Copyright(C)2009FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"f

linux - 使用 gdb 在 Qemu 上调试 init

我正在尝试在Qemu上模拟caviumocteon的mips64linux内核。我目前在使用模式init代码方面遇到一些问题,想调试init。我在命令行中使用-s-S选项启动Qemu并运行gdb使用命令ddd--debugger/OCTEON-SDK/tools/bin/mips64-octeon-linux-gnu-gdb/OCTEON-SDK/linux/kernel_2.6/linux/vmlinux然后用命令附加gdb目标远程localhost:1234gdb当前仅显示在内核空间中运行的指令。我想问的是,有什么方法可以像在内核空间中一样逐步调试用户模式初始化和库指令?例如,如果

c - GDB 不会立即中断程序

调试大型C应用程序时,我从gdb看到奇怪的行为:我总是可以按Ctrl+C中断程序:^CProgramreceivedsignalSIGINT,Interrupt.0x76f58964inselect()at../sysdeps/unix/syscall-template.S:8181in../sysdeps/unix/syscall-template.S(gdb)但是,在程序运行足够长的时间(比如>1天)后,我不能再轻易中断程序了。当试图用Ctrl+C中断程序时,gdb只显示^CProgramreceivedsignalSIGINT,Interrupt.并卡在那里几分钟到几小时。如果花

linux - 我如何让 gdb 在 linux 下使用 D 程序?

我有一个打过补丁的gdb6.8,但我无法进行任何调试。鉴于此测试文件:importstd.stdio;voidmain(){floatf=3.0;inti=1;writeln(f,"",i);f+=cast(float)(i/10.0);writeln(f,"",i);i++;f+=cast(float)(i/10.0);writeln(f,"",i);i+=2;f+=cast(float)(i/5.0);writeln(f,"",i);}并尝试在命令行上进行调试:bash-4.0[d]$dmd-gtest.d#'-gc'showsthesamebehaviour.bash-4.0[d

linux - Linux _x86_64 命令信息中的 GDB 调试

我正在尝试使用gdb在linux中调试我的程序。我想验证Linux中特定帧的寄存器值,为此我运行了两个命令;信息注册和信息框架我发现“inforeg”命令为不同的寄存器显示的值不同于在这种情况下为命令“infoframe”的保存寄存器显示的值。寄存器rbp、rsp、rip对我来说很重要。这些命令有什么区别?当它说“已保存的寄存器”时,这是什么意思以及这些寄存器保存在什么位置? 最佳答案 您想在执行信息注册之前切换到右框架。然后你会发现实际上两者之间没有区别。希望对您有所帮助。亚历克斯。

c - gdb 不接受用户输入

我目前正在关注thisvideo关于如何使用汇编和gdb,使用thisCprogram,但我遇到了问题。下面是我编译和运行gdb时所做的:chiggins@host:~/assem$gcc-ggdb-oSimpleDemoSimpleDemo.cchiggins@host:~/assem$gdb./SimpleDemoGNUgdb(Ubuntu/Linaro7.4-2012.04-0ubuntu2)7.4-2012.04Copyright(C)2012FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisis

linux - gdb 反向步进 - Linux 不支持?

(gdb)reverse-stepTargetchilddoesnotsupportthiscommand.这是在Linux2.6.18中内核不支持吗?我需要一个特殊的gccarg吗?gcc--versiongcc(GCC)4.1.220080704(RedHat4.1.2-52) 最佳答案 我不是专家,但看来您可能忘记启用gdb记录。(gdb)record(gdb)continue(gdb)reverse-continueContinuing.例如,这对我有用Breakpoint1,main(argc=1,argv=0x7ffe6