我在Linux下有一个小的C++项目。当我尝试使用gdb调试可执行文件时,出现以下错误:../../gdb/dwarf2read.c:16760:internal-error:follow_die_offset:Assertion'dwarf2_per_objfile->reading_partial_symbols'failed.AprobleminternaltoGDBhasbeendetected,furtherdebuggingmayproveunreliable.我已将项目大力简化为以下代码,但仍然出现相同的错误:B.h:#ifndefB_H_#defineB_H_#incl
我安装了libc6和libc6-dbg。(gdb)breakfreeifaddrs(gdb)runBreakpoint1,__freeifaddrs(ifa=0xa822e0)at../sysdeps/unix/sysv/linux/ifaddrs.c:840840../sysdeps/unix/sysv/linux/ifaddrs.c:Nosuchfileordirectory.(gdb)list835in../sysdeps/unix/sysv/linux/ifaddrs.c(gdb)disassembleDumpofassemblercodeforfunction__freeif
我的总体目标是从事后核心文件中找出特定进程消耗大量内存的原因。有没有我能以某种方式得到的摘要?显然valgrind是不可能的,因为我无法实时访问该过程。首先获得类似于/proc/"pid"/maps的输出,会有所帮助,但是maintenanceinfosections(如此处所述:GDB:Listingallmappedmemoryregionsforacrashedprocess)在gdb中没有显示堆内存消耗。infoprocmap是一个选项,因为我可以使用完全相同的代码访问机器,但据我所知,它是不正确的。我的进程使用了700MB-s,但是看到的map只占了大约10MB。而且我没
最近我正在做一些基于论文Bypassingnon-executable-stackduringexploitationusingreturn-to-libc的Return-to-libc攻击实验。使用我的Ubuntu11.10。在我的实验之前,我关闭了ALSR。根据论文,我可以在gdb中找到环境变量SHELL="/bin/bash"的地址(使用gdb调试我要攻击的程序):但是当我试图用它来Return-to-libc实验时,我发现这个地址是错误的。然后我写了一个简单的程序来获取环境变量地址:当我在终端中运行这个程序时,我得到了正确的地址:有了这个地址,我就可以进行攻击了。我还找到了相关
我正在尝试使用GDB在当前附加到的正在运行的进程中找到某个值(整数魔数(MagicNumber)(654321))。我找到了一个find[/sn]start_addr,+len,val1[,val2,...]命令,但它需要开始和结束地址,但我不知道我的进程内存从哪里开始以及结束的地方。这似乎是一个非常普遍的问题,但我记得一年前用谷歌搜索过它,现在我重复了一遍但没有成功,所以..我如何知道进程内存从哪里开始,从哪里结束? 最佳答案 “所有内存”的概念在现代过程中很复杂。您真正拥有的是来自不同来源的许多映射。您可以枚举这些(确保不要尝试
我在gdb调试的时候执行ni命令遇到这样的错误:Warning:Cannotinsertbreakpoint0.Erroraccessingmemoryaddress0x3ac706a:Input/outputerror.0xf6fa4771insiglongjmp()from/lib/libc.so.6为了调查gdb遇到了什么问题,我对gdb进行了跟踪并得到了这样的输出:rt_sigprocmask(SIG_BLOCK,NULL,[RT_1],8)=0ptrace(PTRACE_PEEKTEXT,651,0xcc4fdf60,[0x1cc4fe470])=0ptrace(PTRACE
我想在Android机器等设备上调试ARM应用程序,我更喜欢使用gdb(ARM版本)而不是gdb和gdbserver来调试,因为有一个dashboard,Python中GDB的可视化界面。在设备上必须配合gdb(ARM版),所以我需要用python交叉编译一个ARM版的gdb,使用命令如下:./configure--host=arm-linux-gnueabi--target=arm-linux-gnueabi--with-python=/usr/bin但最后出现了错误信息:configure:8096:checkingwhethertousepythonconfigure:8098:
尝试使用gdb调试程序时,它在OPENSSL_cpuid_setup中报告SIGILL失败。使用这个简单的代码,我有相同的行为:#includeintmain(){SSL_library_init();}它编译并运行良好,但在回溯之后以gdb报告开始ProgramreceivedsignalSIGILL,Illegalinstruction.0xb6b2eb40in??()from/usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0(gdb)where#00xb6b2eb40in??()from/usr/lib/arm-linux-gnueab
谁能告诉我在通过GDB调试时使用哪个命令来显示源代码。会有很大帮助。 最佳答案 您可以使用Ctrl+xA键绑定(bind)进入或离开带有代码窗口的TUI模式。或者使用layoutsrc命令进入TUI模式。看其他途易keybindings和commands. 关于linux-GDB调试时如何显示代码窗口,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/19264899/
我有一个来自嵌入式SH3linux设备的core文件,以及我的主机linux中的交叉编译环境(sh3-linux-gdb)的gdb。但是我在用gdb加载核心文件时遇到了问题:$sh3-linux-gdb./myprogram./coreGNUgdb6.3Copyright2004FreeSoftwareFoundation,Inc....ThisGDBwasconfiguredas"--host=i386-pc-linux-gnu--target=sh3-linux"...GDBcan'treadcorefilesonthismachine.(gdb)为什么读不到核心文件?有没有办法从