首页 文章
  • 2 votes
     answers
     views

    gdb不会接受Emacs中的stdin重定向

    我正在尝试在emacs中使用gdb模式调试程序 . 它是用g编译的,我正在使用cygwin . 我的程序接受一个命令行参数,并从stdin获取输入,我从文件重定向,如下所示: program.exe inputFile.dat <otherInput.dat 问题是,gdb正在发送字符串 "<otherInput.dat" 作为命令行参数而不是重定向stdin ...
  • 9 votes
     answers
     views

    Ubuntu上的C app . 安装gcc 4.8.1后,gdb不起作用

    我在Ubuntu 12.04上安装了gcc 4.8.1(我必须添加ppa才能这样做)现在gdb显示以下消息: 无法找到动态链接器断点功能 . GDB将无法调试共享库初始化程序并跟踪显式加载的动态代码 . 无法加载5个库的共享库符号,例如/ usr / lib / x86_64-linux-gnu / libstdc .so.6 . 使用“info sharedlibrary”命令查看完整列表 ....
  • 6 votes
     answers
     views

    gdb与stdin重定向有关

    我正在编写一个程序来通过网络实现Dinic的max-flow算法 . 网络可以手动编写,也可以使用stdin重定向从文件加载 . 我已经能够使用gdb用小文件(大约30行)调试程序,但是当我尝试使用更大的文件(> 1000行)调试程序时遇到了麻烦 . 代码本身是这样的: uint32_t read_lines = 0; while(!feof(stdin)) { err = fsca...
  • 4 votes
     answers
     views

    在ssh上使用gdb时,我可以使emacs正确加载源文件吗?

    我想使用emacs通过ssh远程运行gdb,然后从远程gdb运行目标远程调试服务器 . 我真的想从emacs中运行gdb,但x-forwarding emacs有太多的延迟,所以我在我的mac上本地运行aquamacs . 我使用命令行 ssh work-host /path/to/my/gdb 运行M-x gdb,然后从gdb提示符中我可以定位远程调试目标 . 这一切都很好,但是当我尝试逐步浏览...
  • 28 votes
     answers
     views

    如何使用GDB调试从stdin获取用户输入的程序?

    我有一个程序,我正在尝试使用gdb进行调试 . 在程序内部,我有方法要求用户使用stdin输入输入 . 当我在gdb中时,如何输入此输入?这样我就可以追踪我的方法是如何工作的?
  • 0 votes
     answers
     views

    调用gdb来调试java程序

    我对编程很新,并且在调试java程序时遇到了一些麻烦 . 我尝试使用gdb来调试我的java程序,但无论我怎么努力,它仍然无法正常工作 . emacs(GUI)的迷你缓冲区中的错误消息始终是“没有这样的文件或目录,gdb” . 我确信我的currrent目录与源文件和编译文件(使用“javac -g xx.java”编译的可执行文件)相同 . 所以,我的困惑是:错误是否与以下内容有关:1 . 调用...
  • 1 votes
     answers
     views

    使用gdb调试从stdin读取输入的交互式程序

    我正在用C编写客户端/服务器程序 . 我的客户端有一个从stdin读取输入的线程,它只是一个while(1)循环来读取stdin的输入 . 每当它读取一行时,它就会将它传递给另一个处理消息解析和框架的线程 . 当我输入gdb时,命令行被gdb提示符占用,我无法再将行输入到stdin中 . 有办法吗? (我不想将stdin重定向到输入文件,因为我尝试过这种方法并且它不起作用)
  • 2 votes
     answers
     views

    将文件输入和Stdin传递给gdb

    所以我想在gdb中运行一个程序,文件的内容作为参数 . 然后,当命中EOF时,我希望能够再次输入用户输入 . 对于终端中的普通程序,我可以使用以下命令执行此类操作 . (cat input.txt; cat) | ./program 在gdb中,我可以传递这样的文件参数,但是在文件结束后它会继续输入换行符 . (gdb) run < input.txt 这几乎就好像stdin没有传回程序...
  • 25 votes
     answers
     views

    你如何使用'target remote'在gdb中重新开始运行程序?

    当您在同一台计算机上的可执行文件上执行常规gdb会话时,您可以提供运行命令,它将再次启动该程序 . 当您在嵌入式系统上运行gdb时,与命令target localhost:3210'一样,如何在不退出并重新启动gdb会话的情况下重新启动程序?
  • 38 votes
     answers
     views

    调用gdb以自动将参数传递给正在调试的程序

    我想编写一个脚本(在某些条件下)将执行gdb并自动运行一些带有一些参数Y的程序X.一旦程序执行完毕,用户应该保持在gdb的提示符下,直到他/她显式退出它 . 执行此操作的一种方法是让脚本将run命令加参数Y输出到某个文件F,然后让脚本调用gdb,如下所示: gdb X < F 但有没有办法在不引入临时文件的情况下执行此操作? 谢谢 .
  • 99 votes
     answers
     views

    我可以使用GDB来调试正在运行的进程吗?

    在linux下,我可以使用GDB来调试当前正在运行的进程吗?
  • 174 votes
     answers
     views

    如何让gdb保存命令历史记录?

    如何设置 gdb 以便保存命令历史记录?当我开始一个新的 gdb 会话时,我想使用向上箭头键来访问先前会话的命令 .
  • 0 votes
     answers
     views

    是否可以配置GDB以便在正常的程序终止时自动退出?

    我在OSX上调试一个shell脚本,中间有神秘的段错误 . 如果在脚本之外执行,则该命令不会出现段错误 . 所以我需要以某种方式运行所有附加GDB的脚本程序,以便我可以调试这个段错误 . 是否可以配置GDB以便它运行程序并在程序正确终止时退出?我试过以下代码: echo file ifconfig > gdbcfg echo run >> gdbcfg echo quit &gt...
  • 47 votes
     answers
     views

    如何在gdb中附加进程

    我有一个简单的C程序,它会分叉一个进程,然后运行一个可执行文件 . 我想将子进程附加到gdb . 我在控制台中运行主程序并打开另一个控制台以查找子进程的pid,然后使用以下命令启动gdb: gdb attach 12271 其中 12271 是子进程ID,但附加失败: No such file or directory. 知道为什么吗?
  • 6 votes
     answers
     views

    C编程:如何将gdb与Makefile和命令行参数一起使用?

    要创建.out可执行文件,我必须输入: $: make $: myprogram.out name.ged 我的程序包含一个命令行参数,因此是“name.ged” . 每当我在获得分段错误(核心转储)后运行gdb,我输入: $: gdb a.out core (gdb): bt 然后我使用back trace命令,gdb返回: #0 0x4a145155 in ?? () #1 0x08a16...
  • 3 votes
     answers
     views

    如何在Eclipse中启动gdb调试之前运行linux脚本

    在Eclipse中启动gdb调试之前,如何运行命令? 实际上我想执行几个脚本来设置环境变量(导出变量)并执行一堆其他程序,然后从eclipse启动gdb进程来调试我的程序 . 我尝试在调试器选项卡选项中执行以下操作: <command> && <path-to-gdb-executable> 但是我得到了eclipse无法执行上述语句中给出的gdb的错误 ...
  • 5 votes
     answers
     views

    gdb如何从脚本执行目标程序

    我想使用gdb调试程序 . 但我通过脚本调用该程序 . 我该如何使用gdb?脚本很长,我无法使用gdb中的命令行参数直接调用程序 . 脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程 . 我想要做的是,用这个程序启动gdb,添加我的断点然后执行脚本(FYI - 它也接受参数),然后当它遇到断点时做我想做的任何事情 . 我在gdb中查看了shell选项,但是如果我没有错的话会产生一个新sh...
  • 0 votes
     answers
     views

    从gdb中找不到GLIBCXX

    我尝试用gdb调试程序,在运行命令后我得到错误(在gdb内) /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found 我确保LD_LIBRARY_PATH已设置,即 set env LD_LIBRARY_PATH ,因为它在调用shell中,如果启动该程序,则不会出现此错误消息 . 这个错误是由于没有安装libc的调试版本吗?
  • 11 votes
     answers
     views

    成功终止后自动退出gdb?

    我使用一个调试脚本,它使用调试器连续运行几个相关的进程 . 我正在使用 -x 自动执行多个命令(例如 run ) . How can I make gdb quit automatically when the debugged process successfully terminates? 在命令文件中添加 quit 命令将导致该命令不仅在成功终止时处理,而且在发生错误时(当我宁愿接管那个...
  • 6 votes
     answers
     views

    使用gdb进行C特定调试技巧[关闭]

    使用gdb调试C程序有哪些你最喜欢的技巧? 对所有技巧感兴趣但也 如何从gdb中的对象上调用方法(可能是虚拟的) 检查STL对象(非常打印它们) 阻止gdb使用continue进入STL代码 处理内联,线程,tcmalloc(或自定义分配器) 在不同的会话中保留gdb命令的历史记录
  • 0 votes
     answers
     views

    带有SIGFPE异常的程序在gdb下的行为有所不同

    我有一个简单的C程序,在使用gdb调试时表现不同,而不是 . 该计划是这样的: #include <stdio.h> #include <signal.h> int main() { kill(getpid(), SIGFPE); printf("I'm happy.\n"); return 0; } 当它自己运行时,我得到了...
  • 5 votes
     answers
     views

    如何处理GDB中的所有信号

    我正在做以下事情: gdb -p $progid -x $file >> cat file >> handle SIGUSR1 nostop c 如何处理nostop的所有信号而不必写: handle SIGUSR1 nostop handle SIGUSR2 nostop Etc...
  • 3 votes
     answers
     views

    D2和gdb问题

    简短的问题:在gdb中是否有D2的支持(我有gdb 7.2)? 长话故事:我编写了下一个小应用程序...... // file main.d int glVar = 0xAAAAAAAA; void main() { glVar = 0xBBBBBBBB; } ...使用命令"dmd -gc -debug main.d";然后我将它加载到gdb并尝试调试它: vnm@...
  • 14 votes
     answers
     views

    无法调试eclipse helios cdt上的小程序使用windows下的mingw / gdb,控制台冻结

    我一直在尝试使用Eclipse CDT做一些c示例,我可以使用run命令运行它们,但每当我尝试调试时,控制台窗口冻结,我能够输入,但程序没有继续 . 当我调试时,我在控制台窗口上得到以下输出(没有断点,但由于默认设置,主要中断): Hello, world put your name: 15^running 继续按钮被禁用,当我输入内容并按回车键时,它不会执行任何操作 . 15是随机数,有时是...
  • 1 votes
     answers
     views

    gdb继续而不是踩踏

    我用 -O0 和 -ggdb args编译了所有内容,以摆脱优化并添加调试符号 . 我已经多次使用gdb来调试c代码,但这是我第一次在c上使用它 . 当我尝试使用gdb进行调试时,一切正常,除了“next”命令有时“继续”而不是转到下一个源代码行 . 调试器总是在断点处停止,但它似乎决定跳过许多行而不是下一个...例如我可能有类似的东西: int foo::bar(list_class<i...
  • 1 votes
     answers
     views

    为什么这个地址在gdb中发生了变化?

    我正在使用gdb调试一个非常简单的汇编程序(SPARC),并且遇到了一个奇怪的问题 . 我正在尝试使用gdb将argv中的参数打印到我的程序的主函数中 . 出于某种原因,$ i1中的地址(main的第二个参数)有时会更改为指向-1 . 这是我的gdb会话的复制粘贴: (gdb) p/x $i1 $1 = 0xffbff084 (gdb) x/x 0xffbff084 0xffbff084: ...
  • 1 votes
     answers
     views

    gdb:在C中跳过throw语句

    使用GNU gdb调试器调试C程序时,我可以使用gdb命令跳过下一行代码 next 但是,当在下一行中抛出异常时,例如 throw SomeException(); 然后gdb继续运行,直到下一个断点,而不是在 catch 块的第一行内停止 . 这是gdb中的错误,还是我只是使用了错误的命令?我在mingw32 / Windows上使用gdb版本7.7 .
  • 0 votes
     answers
     views

    GDB / DDD:使用多进程应用程序C / C调试共享库

    我正在尝试调试服务器应用程序,但我遇到了一些困难,我需要在哪里 . 该应用程序分为两部分: 一个服务器应用程序,它生成工作进程(而不是线程)来处理传入的请求 . 服务器基本上会产生进程,这些进程将先处理先前服务的传入请求 . 服务器还以共享库的形式加载插件 . 共享库定义了服务器能够处理的大多数服务,因此大多数实际处理都在此处完成 . 作为一个额外的快乐, Worker 处理“重生”(...
  • 46 votes
     answers
     views

    使用gdb调试C STL / Boost的最佳实践

    使用gdb进行调试,任何使用STL / boost的c代码仍然是一场噩梦 . 任何使用过STL的gdb的人都知道这一点 . 例如,请参阅代码here中的一些调试会话的示例运行 . 我试图通过收集提示来减轻疼痛 . 您能否对我在下面收集的提示发表评论(特别是您使用过的提示以及您建议的任何更改) - 我列出的提示是技术性的降序 . 是否有人使用"Stanford GDB STL util...
  • 7 votes
     answers
     views

    在Linux上,在Eclipse CDT中使用gdb调试C应用程序,如何向stdin输入内容?

    在Linux上,我试图在Eclipse CDT中使用gdb调试C应用程序 . 例如,应用程序 applic.exe 需要一些命令行参数 arg1 和 arg2 ,它需要 stdin 上的一些数据(例如,取自文件 input.txt ) . 通常,要在控制台中运行应用程序,我会这样做: cat input.txt | applic.exe arg1 arg2 在控制台中使用gdb我可以这样做: g...

热门问题