我试图在RT上调试一个多线程应用程序。在普通Linux上,应用程序运行良好,GDB也运行良好。在RT Linux上,应用程序运行良好,但在GDB下,应用程序运行几秒钟,然后终止并打印:
Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists.
我无法进行回溯,也无法确定是什么导致了问题。我怀疑这可能是gdb使用的一些库,或者可能是应用程序中的内存损坏。
我创建了60多个线程,更多的线程是由各种看门狗和计时器创建的。到目前为止,我已经尝试过:
检查libp线程.so
我正在尝试调试一个在处理请求时派生的进程。
我已经将follow-fork-mode设置为child,允许gdb在命中子对象中的断点时闯入。但是,当我继续从子进程中继续时,父进程就分离了。
很多文档都指向选项detach-on-fork,但是如果我尝试设置这个选项,我会得到:
(gdb) set detach-on-fork on
No symbol "detach" in current context.
该选项的链接清晰可见:
编辑:系统信息
>uname -a
Linux localhost 2.6.9-78.0.22.ELsmp #1 SMP Thu Apr 3
使用Android NDK编写程序。该程序使用了几个库。所有这些都是非常繁重的CPU到90%。如何找出CPU负载最多的库?有专门的技术或工具吗?
编辑:这就是我得到的:
[user@localhost HelloNDK]$ ./remotegdb.sh
Package name is org.divenvrsk.android.hellondk
Found running pid: 7726
Device CPU ABIs: armeabi-v7a armeabi
Using app_out directory: /home/user/Dropbox/HelloNDK/obj/local/ar
我安装了libc6 & libc6-dbg。
(gdb) b
reak freeifaddrs
(gdb) run
Breakpoint 1, __freeifaddrs (ifa=0xa822e0) at ../sysdeps/unix/sysv/linux/ifaddrs.c:840
840 ../sysdeps/unix/sysv/linux/ifaddrs.c: No such file or directory.
(gdb) list
835 in ../sysdeps/unix/sysv/linux/ifaddrs.c
(gdb) disassemble
Dump of a
我是gdb的新手。当我调试我的程序时,我只得到像下面这样的回溯。
Program received signal SIGSEGV, Segmentation fault.
0x000000003075a238 in ?? ()
(gdb) backtrace
#0 0x000000003075a238 in ?? ()
#1 0x00007fff72825da8 in ?? ()
#2 0x0000000000000008 in ?? ()
#3 0x000000003063c340 in ?? ()
#4 0x0000000000000000 in ?? ()
(gdb)
我猜有
希望在Linux中使用gdb作为调试器。试图运行二进制文件我得到了以下信息:
(gdb) r
Starting program: /usr/local/sbin/test
/bin/bash: /usr/local/sbin/test: No such file or directory
During startup program exited with code 127.
(gdb)
我想这应该是最基本的。但我搜索了很多最常见的答案是
$ export SHELL=/bin/bash
这没什么用。我还试图更改二进制文件执行的路径,尝试从不同的目录运行.还是一样的。
你能帮我一下吗?
我正在使用这段代码作为测试。
#include <sstream>
#include <iostream>
int main () {
std::stringstream ss;
ss << "This is a test\n";
std::cout << ss.str();
}
我用g++ -O0 -g test.cpp编译。当我在gdb中运行程序并在cout行的断点停止时,试图打印ss或ss.str()失败。
(gdb) p ss
$1 = <incomplete type>
(gdb) p s
我用MSYS2 MINGW64编译器构建了neovim 。它建造得很棒。但是构建脚本强制我从一个普通的shell (cmd/pwsh)构建它。 # These are native MinGW builds, but they use the toolchain inside
# MSYS2, this allows using all the dependencies and tools available
# in MSYS2, but we cannot build inside the MSYS2 shell. 因为它是从Windows外部构建的,所以可执行文件中的调试信息被设置为本
我有一个基于飞思卡尔的iMX6q ARM Cortex A9处理器的ARM开发板。我还有一个要在电路板上调试的应用程序。开发板正在运行LTIB文件系统,其中包含未剥离的运行时库。在主机上,我也下载了一个Linaro工具链(具体来说是soft float 2012.04 ),它只有剥离的库。
我想告诉gdb (在主机上运行)使用一组不同的运行时库(未剥离的运行时库),而不是保存在主机上的LTIB文件系统的映像。
我该怎么做?
请求gdb给我
(gdb) show debug-file-directory
它会返回一些在我的主机文件系统上根本不存在的路径……
The directory where
我不擅长英语,对此我很抱歉。现在,有一个关于我何时用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
我有Qt应用程序,这是显示一个WebView (基于webkit)。我正在尝试使用gdb来调试它。当我通过gdb运行应用程序时,它几乎立即崩溃。该应用程序在gdb之外运行时不会出现问题。 崩溃的原因是: Thread 1 "myapp" received signal SIGILL, Illegal instruction.
0x4a4d9a88 in ?? () from /usr/lib/libcrypto.so.1.0.2 由于错误是SIGILL,是否有可能是gdb从错误的路径加载lib? 这个应用程序非常简单,只是在特定的URL上显示一个WebView: ui