我想调试一个运行多个TCP服务器线程的C程序。我不能设置一个复杂的调试工具,因为我必须在嵌入式linux(忙碌的盒子)中进行调试。我希望它能原生支持gdb。
所以我从gdb开始。一旦我输入run,服务器似乎在后台运行,但gdb返回提示和"Program received signal SIG64 (Real-time event 64)“消息(我猜与pthread有关)。我知道这一定是因为main被分成了几个线程。但是我不知道如何调试它。任何起点都会很有帮助。
另外,有没有其他的“跟踪”,比如调试器,我可以使用很小的内存?
请帮帮忙
我的生产服务器上的Apache正在断断续续地故障。我在apache配置中启用了核心转储选项,并有几个转储核心文件。不幸的是,由于它是生产服务器,apache或加载的模块没有使用调试符号进行编译。据我所知,gdb没有调试符号就不能做很多事情。
我能否至少找出哪个模块导致seg故障,而不需要调试符号?如果是这样的话,是怎么做的?
更新下面是gdb回溯跟踪的输出
(gdb) bt full
#0 0xb7f1f832 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
No symbol table info available.
#1 0xb7be8
我在gdb (7.1版)中收到以下消息:
[Thread debugging using libthread_db enabled]
和命令reverse-step
结果显示以下错误消息:
(gdb) reverse-step
Target multi-thread does not support this command
我现在正在调试一个串行代码,所以我绝对不需要多线程。我是否可以以某种方式将其关闭,以便获得最新的反向调试命令?此外,如果代码与OpenMPI并行化,则根本不需要多线程调试,对吧?
Edit:是否设置为编译标志,可以直接排除?
我不擅长英语,对此我很抱歉。现在,有一个关于我何时用GDB调试samba的问题。
# gdb /usr/local/samba/sbin/smbd
GNU gdb Red Hat Linux (5.2.1-4)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it
我使用多线程HTTP服务器的Boost asio 编写了一个小应用程序。如果我按下ctrl-c键,我就会定期收到一个seg错误。我知道我一定是覆盖了某个地方的内存,但不太确定如何调试它。GDB中的堆栈跟踪没有任何帮助。在我点击dtor之前,有没有一些工具可以帮助我检测到腐败?(对不起,我基本上是个Java人)
谢谢。在Debian Linux上使用Boost 1.38
PS这里是堆栈跟踪
Program terminated with signal 11, Segmentation fault.
#0 0xb7f74389 in tls_destructor (data=0xb5200fc8
我正在使用gdb来调试程序。我看到的有点奇怪:
(gdb) bt
0xb59656f8 in globalCallStubClass::addCallContext (**this=0x0**)
at /ccase_enodeb/callp/build_callp/src/test/framework/shared/src/shared_call_context.cc:1962
0xb5b52e64 in rrcStubClass::process_scenario_spontaneous_trigger_RRC_CONNECTION_REQUEST (gcppMsgCtx=...
我正在Linux上调试静态多线程x86-64 C++应用程序。
我可以在函数上设置断点并在其上停止,我可以一步一步地遍历函数体。但是当我尝试单步执行另一个函数时,gdb并没有在它的开始处停止,它似乎只是继续执行。当我中断程序执行时,gdb进入中断状态,并且变得不可用:
(gdb) bt
Target is executing.
(gdb) c
Continuing.
Cannot execute this command while the selected thread is running.
(gdb)
作为一种变通办法,我可以多次使用stepi而不是step,stepi的工作方式与预期
我正在Windows上运行Eclipse,以开发在远程Linux系统上构建和测试的C代码。目前,该代码从未在Windows上编译过。
我能够使用CDT在gdbserver下在Linux目标上开始远程进程,然后从Windows主机附加gdb。但是,gdb立即失败,错误如下:
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default i386 settings.
[...]
Re
我试图在x86_64 suse上远程调试32位应用程序,但是得到了这个“远程注册错误格式化”错误。
我启动gdbserver时侦听端口12345 (:12345 my_prog)
这是一个错误:
$ gdb
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under
我正在尝试使用gdb调试Linux,我用"compile kernel with debug info“编译了内核。一旦内核编译完成,我正在尝试提供GDB文件vmlinux (运行上面的命令会出现下面的错误)
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Reading symbols from file...(no debugging symbols found)...done.
"/home/Linux/vmlinux" is not a core dump: File format not recognized
我正在使用Windows Subsystem for linux使用VS Code来调试'C‘代码。我基本上是想用一个基于linux的编译器来编译“C”代码。我已经在Visual Studio Code中将默认终端设置为'WSL‘。单击调试按钮后,我收到以下错误消息:“Unable to start debubug.the value of miDebuggerPath is invalid”我确认'gdb‘已安装在Windows Subsystem for Linux中,并且它的可执行文件(ELF文件)位于'/usr/bin/gdb’位置
这是m launch
谁可以指导如何使用GDB调试器在Linux上调试JNI代码(如果可能,请建议其他选项)。
-My JNI project when running on Linux is leading to a JVM crash.
-The CPP code has been compiled into .so files.
-I run the project like this : *java xyz.jar -commandline_args_to_project*.
我已经安装了Gdb,但我不知道如何使用它来调试项目。另外,我是否有必要使用-g选项t调试.so文件来编译.
我正在尝试调试用户程序,但当我执行以下操作时:
open a terminal:make qemu-gdb
another terminal:
riscv64-unknown-elf-gdb
file wc(or any other user programs)
it says:
(gdb) file wc
warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default riscv