首页 文章
  • 88 votes
     answers
     views

    如何加载程序读取stdin并在gdb中获取参数?

    我有一个程序从stdin获取输入,并从命令行获取一些参数 . 它看起来像这样:cat input.txt> myprogram -path“/ home / user / work”我尝试用emacs内的gdb调试代码,通过M-x gdb,我尝试使用以下命令加载程序:gdb cat input.txt> myprogram -path“/ home / user / work”但是,...
  • 0 votes
     answers
     views

    在Xeon Phi上使用GDB的LD_LIBRARY_PATH

    我目前正在尝试使用英特尔提供的GDB版本(gdb-mic)调试Xeon Phi的本机应用程序 . 当我在登录Phi时运行程序时,如果设置了LD_LIBRARY_PATH = / tmp(我先前已经转移了libiomp5.so),它就可以工作 . 但是,当我使用GDB调试应用程序时,我无法设置库路径 . 我尝试了命令“set env LD_LIBRARY_PATH = / tmp”,但是GDB仍然找...
  • 1 votes
     answers
     views

    使用gdb在Fortran中打印可分配数组:未处理的矮化表达式操作码0x97 [重复]

    这个问题在这里已有答案: Fortran print allocatable array in gdb 3个答案 我使用gdb作为调试器在Cygwin和Eclipse中调试了以下代码: program codetest implicit none integer, parameter :: dp = kind(1.0d0) integer, parameter :: ...
  • 5 votes
     answers
     views

    在gdb中打印漂亮的Fortran动态类型

    在gdb中打印Fortran可分配多态变量的值非常痛苦 . 鉴于以下程序,为了查看 alloc_ext 的值,我必须执行以下操作: (gdb) p alloc_ext $1 = ( _data = 0x606260, _vptr = 0x400ce0 <__foo_MOD___vtab_foo_My_extended_type> ) (gdb) ptype alloc_ext type...
  • 87 votes
     answers
     views

    如何使用命令标志在未来的共享库上设置断点

    我正在尝试使用 --command 标志自动化gdb会话 . 我正在尝试在共享库(Unix的等价物DLL)中的函数上设置断点 . 我的cmds.gdb看起来像这样: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r 但是,我得到以下内容: shlomi:~/progs/bugs-external/kde/...
  • 4 votes
     answers
     views

    在Mac OS X 10.7上使用gnu gdb进行反向调试

    我非常有兴趣在MacOS X上反向调试一个巨大的基于xcode的项目 . 问题是XCode 4.1有gdb版本6.3.50,而反向调试从7.0开始 所以我通过macports安装了gdb 7.3,但它拒绝识别可执行文件的消息: GNU gdb(GDB)7.3版权所有(C)2011 Free Software Foundation,Inc . 许可证GPLv3:GNU GPL版本3或更高版本htt...
  • 4 votes
     answers
     views

    OSX Lion上的GDB 7.3.1

    我正在尝试使用来自macports的GDB(v 7.3.1)来调试用g 4.7(也来自macports)编译的可执行文件 . 但是,我启动调试器,我得到以下输出: GNU gdb(GDB)7.3.1版权所有(C)2011 Free Software Foundation,Inc . 许可证GPLv3:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html这...
  • 0 votes
     answers
     views

    MinGW GDB(v7.6.1) - (gdb)在fd 0上检测到异常条件

    我有一个非常简单的C程序: #include <iostream> using namespace std; int main(){ int i = 0; cout << "Hello world!" << endl; i++; } 当我用debug编译链接时: ---jGRASP exec: C:\MinGW\bin\g++...
  • 4 votes
     answers
     views

    gdb从不同目录中的文件获取预处理器宏信息

    我试图调试大量使用 #define 语句来设置整个代码中使用的不同值 . 我需要能够看到这些值是什么,以帮助我调试(因为它们包括一些非常重要的信息 . 经过一些挖掘后,我发现 info macro FOO 和 macro expand FOO 命令应该能够打印这些值,如果 -g3 选项(也尝试了 -gdwarf-2 和 -ggdb3 标志)传递给编译器(如here所述) . 但是,每当我尝试使用它...
  • 18 votes
     answers
     views

    在Windows下调试(逐行)Rcpp生成的DLL

    最近我一直在尝试使用Rcpp(内联)来生成DLL,这些DLL在提供的R输入上执行各种任务 . I'd like to be able to debug the code in these DLLs line by line, given a specific set of R inputs. (我在Windows下工作 . ) 为了说明,让我们考虑一个任何人都应该能够运行的具体例子.........
  • 46 votes
     answers
     views

    分段错误的行号

    我可以设置任何gcc选项,它会给我分段错误的行号吗? 我知道我可以: 逐行调试 将printfs放入代码中以缩小范围 . 编辑: gdb上的 bt / where 给出无堆栈 . Helpful suggestion
  • 3 votes
     answers
     views

    qemu和gdb问题

    我有一个冻结操作系统的设备驱动程序 . 老鼠甚至不会移动 . 我正在尝试调试这个问题,我相信一个好的方法是使用gdb和qemu,这是我以前从未使用过的两件事 . 有更好的方法吗? 所以首先我需要用已经完成的调试符号编译内核 . 现在,生成了一个名为vmlinux的新文件,该文件位于与源相同的文件夹中 . 看来我还需要一个bzImage文件according to this所以我可以运行新编译的内核...
  • 2 votes
     answers
     views

    在kgdb中,我无法设置断点

    我正在使用kgdb来调试内核 . 我正在使用qemu 2.11.0和ubuntu 16.04.3服务器版本 . 我安装了内核4.16.0-rc6(主线)并使用此内核使用kgdb选项(kgdbwait kgdboc = ttyS0,115200)引导guest虚拟机操作系统 . gdb可以成功连接到guest虚拟机 . 但是,设置断点失败,并显示以下错误消息 . 无法访问地址0xffffffff8...
  • 115 votes
     answers
     views

    如何使用GDB删除单个断点?

    我可以在GDB中添加一个断点: b <filename>:<line no> 如何删除特定位置的现有断点?
  • 1 votes
     answers
     views

    如何在启用kvm并且cpu是主机的情况下运行qemu时跟踪来宾操作系统?

    当使用kvm并且cpu设置为host时,是否可以跟踪 guest OS 执行(中断/观察点,单步执行)? 如果我用qemu运行 qemu-system-x86_64 -no-kvm -cpu core2duo -m 256 -cdrom kernel.iso -s -S target remote:1234 // on gdb commande line 跟踪很好,但是当我运行时 qemu-...
  • 291 votes
     answers
     views

    如何在bash脚本中使用gdb运行带有命令行args的程序?

    通常,在gdb上运行程序时,程序的参数在 run 命令中给出 . 有没有办法使用gdb运行程序,并在shell脚本中提供参数? 我在相关问题中看到了一个答案,提到我们可以在脚本开始执行后将gdb附加到程序中 . 但接下来我将不得不“等待”该计划 . 我很好奇是否还有其他方法可以做到这一点 .
  • 1 votes
     answers
     views

    gdb调试奇怪

    当使用gdb调试某些代码时,它有时会在使用next命令时多次重复一些代码片段,在重复之后,使用n命令,它会在程序行中顺序继续 . 这种奇怪行为的原因是什么?或者之前有人遇到过这个问题?有什么可以解决这个问题?我有GNU gdb(GDB)7.2-ubuntu .
  • 64 votes
     answers
     views

    gdb - 用管道输入调试(不是参数)[重复]

    这个问题在这里已有答案: How to load program reading stdin and taking parameters in gdb? 4个答案 我通常运行我的程序: perl -e 'print "A"x200' | ./vuln_prog stdin由C中的 gets() 函数使用 . 如果这只是一个命令参数,我可以通过执行以下操作打开gdb: gd...
  • 79 votes
     answers
     views

    gdb拆分视图与代码

    我只是在gdb中调试一个程序,不知怎的,我发现了一个我以前从未见过或甚至没有听说过的新功能,除了给出命令之外我还可以看到和浏览代码: 这是什么?我做了什么,或者更具体地说,我怎样才能再次进入这种分屏模式?这个模式有名称,还是我可以阅读的有关如何使用它的地方?
  • 3 votes
     answers
     views

    GDB:捕获信号并继续调试

    我试图在GDB中捕获浮点异常(SIGFPE),而不是将其传递给进程并继续调试 . 我给了gdb这个: handle SIGFPE stop nopass 当SIGFPE发生时,GDB停在正确的位置 . 问题是我不能也不知道如何继续调试 . 我试过给GDB continue 要么 signal 0 但它仍然挂在违规线上,并拒绝继续 . 收到信号后有没有办法继续调试? 我正在使用我自己编译的GD...
  • 3 votes
     answers
     views

    如何使用GDB通过信号处理调试代码?

    我在调试中运行代码 . 一旦父进程收到一个信号,调试器就会在步进时显示我在父处理程序代码中 . 但从那时起,我无法控制GDB . 当我点击继续时它输入一些文件并停止以下消息: Program received signal SIGTRAP, Trace/breakpoint trap. _dl_runtime_resolve () at ../sysdeps/x86_64/dl-trampolin...
  • 0 votes
     answers
     views

    GDB.exe在使用自身调试gdb时停止工作

    我已经从开源构建了gdb,现在我试图通过使用以前的版本调试它来了解它的工作原理 . 我可以放断点但是当我尝试继续或步骤弹出时,gdb.exe已停止工作 . 它发生的任何具体原因?
  • 271 votes
     answers
     views

    打印所有全局变量/局部变量?

    如何打印所有全局变量/局部变量?这可能在gdb中吗?
  • 1 votes
     answers
     views

    在反汇编代码中跟踪调用堆栈

    我正在尝试调试棘手的核心转储(来自-O2优化二进制) . // Caller Function void caller(Container* c) { std::list < Message*> msgs; if(!decoder.called(c->buf_, msgs)) { .... ..... } // Called Function boo...
  • 3 votes
     answers
     views

    在使用GDB调试使用Rust 1.10编译的程序时,无法在main上设置断点

    我试图通过这个: fn main() { println!("Hello {}", 0); } 我尝试用两种方法进行编译: cargo build 和 rustc -g -L src/main.rs 然后我运行 gdb target/debug/rust-gdb-test (或 gdb main ),并尝试使用 break main 在 main 上设置断点 . ( ...
  • 1 votes
     answers
     views

    短跳,相对偏移不使用我期望的偏移

    我想了解简短的jmp指令 . 我有一个非常简单的程序,用nasm编译: SECTION .data bsh: db "/bin/sh",0 arr: dq bsh,0 SECTION .text global main main: jmp short 0x20 mov edx, 0 ...
  • 6 votes
     answers
     views

    GDB远程调试错误

    我试图在x86_64 suse linux上远程调试32位应用程序,但得到这个“远程寄存器格式错误”错误 . 我启动gdbserver作为侦听端口12345(gdbserver localhost:12345 my_prog) 这是错误: $ gdb GNU gdb 6.6 Copyright (C) 2006 Free Software Foundation, Inc. GDB is free ...
  • 50 votes
     answers
     views

    未生成核心转储文件

    每次,我的应用程序崩溃都不会生成核心转储文件 . 我记得几天前,在另一台服务器上它生成了 was . 我正在使用bash中的屏幕运行应用程序,如下所示: #!/bin/bash ulimit -c unlimited while true; do ./server; done 如你所见,我正在使用 ulimit -c unlimited ,如果我想生成核心转储,这很重要,但是当我遇到分段错误时...
  • 126 votes
     answers
     views

    如何用gdb分析程序的核心转储文件?

    我的程序运行如下: exe -p param1 -i param2 -o param3 它崩溃并生成了一个核心转储文件 core.pid 我想通过分析核心转储文件 gdb ./exe -p param1 -i param2 -o param3 core.pid 但是gdb将 exe 的参数识别为gdb的输入 . 在这种情况下如何分析核心转储文件?
  • 0 votes
     answers
     views

    分析故障核心转储(gdb)

    我在imax6q自定义硬件设计上运行基于Linux的应用程序时遇到了分段错误 . 我使用Linux GDB回溯了核心转储,然后您可以看到这些核心转储 . 我正在使用的内核 - Linux-boundary 4.1.15 Seg fault Core dump 1 Program terminated with signal SIGSEGV, Segmentation fault. #0 gcoT...

热门问题