标签: gdbserver

如何暂停连接到远程目标gdbserver的gdb

通过以下方式连接到远程gdbserver之后:

target remote server:8888 
Run Code Online (Sandbox Code Playgroud)

要么

target extended-remote server:8888
Run Code Online (Sandbox Code Playgroud)

继续使用CTRL + c后,无法暂停调试器.在同一个PID上的本地gdb会话中执行相同操作.尝试调试附加到其他进程(如vim)的远程gdbserver,例如CTRL + c也可以.

我尝试了不同的组合

handle SIGINT stop noprint nopass
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.

暂停调试器的唯一方法是

kill -SIGTRAP $(pgrep -f my_app)
Run Code Online (Sandbox Code Playgroud)

在远程主机上.

$ gdb
target extended-remote localhost:8888
Remote debugging using localhost:8888
Reading /lib64/libdl.so.2 from remote target...
Reading /lib64/libSegFault.so from remote target...
...
Reading /lib64/ld-linux-x86-64.so.2 from remote target...
0x00007f6b26857923 in __select_nocancel () from target:/lib64/libc.so.6
(gdb) where
#0  0x00007f6b26857923 in __select_nocancel () from target:/lib64/libc.so.6
...
#9  0x00000000004497ee in main (argc=14, argv=0x7ffe8e4b0af8) at main.cpp:245

(gdb) c
Continuing.

^C^CThe …
Run Code Online (Sandbox Code Playgroud)

linux debugging gdb gdbserver

7
推荐指数
0
解决办法
816
查看次数

使用Eclipse远程调试gdbserver

有没有人知道为什么我在使用目标远程命令使用gdb在命令行管理设备时无法使用Eclipse CDT远程调试设备?连接时我会收到警告,但除此之外它似乎工作正常.

使用Eclipse我应该有正确的设置,gdbserver在远程机器上通知我建立了连接,但之后Eclipse发出错误:'启动调试'遇到了问题.请求失败:目标没有响应(超时).远程设备也说"杀死劣质"(我没有得到gdb).错误日志也没有显示任何其他内容.

我在两种情况下都使用相同的进程,二进制和gdb可执行文件,并连接到同一设备和端口.我正在使用gdb 7.1,主机是64位Ubuntu Lucid.

gdb remote-debugging eclipse-cdt gdbserver

6
推荐指数
1
解决办法
3169
查看次数

无法在Android和NDK下使用gdb进行调试,启动Gdb会崩溃App

我在尝试使用Android NDK调试本机代码时遇到问题.

当App正在运行时,我启动了ndk-gdb,结果是gdb失去了与设备的连接,设备上的应用程序崩溃了.

设备(三星Galaxy 10.1)和模拟器都发生了同样的事情.主机运行的是Mac OS X.应用程序的原生部分由多个.so库组成,并使用ndk-build clean all NDK_DEBUG=1

我附上了gdb下面的输出.

任何帮助将不胜感激.

编辑:问题可能是'cp'命令失败?空的"使用gdb setup init:"行?


$NDK/ndk-gdb --verbose
Android NDK installation path: /Users/flavio/Documents/android-sdk-mac_x86/ndk/android-ndk-r7
Using default adb command: /Users/flavio/Documents/android-sdk-mac_x86/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using final ADB command: '/Users/flavio/Documents/android-sdk-mac_x86/platform-tools/adb'
Using auto-detected project path: /Users/flavio/MacDevel/nTrack/trunk/n-Track_EX/Android/AndroidTesting
Found package name: com.ntrack.ntrack
ABIs targetted by application: armeabi
Device API Level: 12
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Found debuggable flag: false
Found gdbserver under libs/armeabi, …
Run Code Online (Sandbox Code Playgroud)

android gdb android-ndk gdbserver

6
推荐指数
1
解决办法
6125
查看次数

如何在继续之后返回gdb提示符并且gdb没有命中断点

(gdb)目标远程机器-XYZ:5001
(gdb)b some_function_name
(gdb)c
继续.

现在这里远程进程没有命中功能,gdb仍处于持续阶段.但是,如果我必须添加更多的断点,或者如果我必须分离我怎么能这样做,如果不返回提示,则无法完成.

gdb gdbserver

6
推荐指数
1
解决办法
1004
查看次数

gdb远程调试。实现一个假的 gdbserver 存根。经过多次请求和响应后,收到警告:无效的远程回复

为了项目的需要,我编写了一个简单的java套接字程序来实现一个“假”gdbserver存根。因此,支持最少数量的 gdb RSP 命令:g、G、m、M、c 和 s。对于其他命令,只需响应“$#00”即可。根据gdb的手册,这会告诉gdb“服务器”不支持其他命令。

我使用 Eclipse CDT 来帮助我进行调试。在调试配置中,我选择了 c/c++ 远程应用程序,并在 localhost:10000 上使用 TCP 设置调试器连接,我的 java 程序将在其中侦听。

首先,gdb 发送 qSupported、Hg0、qTStatus、? 和 qC 等命令。对所有命令的响应都是“$#00”,告诉 gdb“服务器”不支持这些命令。然后,gdb 发送 qAttached 和 qOffsets。发送两个“$#00”响应并收到来自 gdb 的“+”后,gdb 显示“警告:远程回复无效:”。

有人可以告诉我为什么会发生这种情况吗?为什么gdb不发送命令并说“无效的远程回复:”,我不知道什么回复无效,毕竟我只是发送“$#00”和“+”给gdb。

c linux debugging gdb gdbserver

6
推荐指数
1
解决办法
2476
查看次数

CLION中的GDB Monitor命令

我正在尝试使用远程GDB调试嵌入式项目.我的系统:

  • 目标:ARM Cortex M0.
  • SEGGER J-Link GDB服务器V6.10命令行版本
  • arm-none-eabi-gdb 7.10.1.20160616-cvs
  • CLion 2016.2.2,Build#CL-162.1967.7
  • Ubuntu 16.04

我的.gdbinit文件中有以下内容:

target remote localhost:2331 #(I remove this line when debugging with CLion)
set verbose on
file "/path_to_output_file/blinky.elf"
monitor reset
break main
Run Code Online (Sandbox Code Playgroud)

几天来困扰我的事情是,如果我直接从终端调试gdb,这可以正常工作,但是当我在CLion中使用调试器时却没有.在CLion我收到错误:

此目标不支持"monitor"命令.

我的理论是终端接受"监视器重置"命令(至少它没有抱怨).另一方面,CLion会打印错误,但之后会显示继续执行而不进行重置.结果似乎是当我在CLion中启动一个新的调试会话时,我不会在main()的开头开始.

CLion是否阻止了监视器命令?如果是这样,那么为什么并且有解决方法?

我觉得我的问题可能与CPP-7322CPP-7256有关.

debugging jlink gdbserver cortex-m clion

6
推荐指数
1
解决办法
3399
查看次数

gdbserver:目标描述指定未知架构“aarch64”

我尝试远程使用 gdbserver 进行调试,如下所示

在目标机器上启动 gdbserver

$ gdbserver localhost:2000 hello -l 20 -b 10 --enable-targets=all
Run Code Online (Sandbox Code Playgroud)

主机具有启用调试的程序二进制文件

"copied binary from ARM target to host" 
Run Code Online (Sandbox Code Playgroud)

在主机上运行 gdb

$ gdb -q --args hello --enable-target=all
Run Code Online (Sandbox Code Playgroud)

连接到目标

(gdb) target remote 192.168.15.132
192.168.15.132: No such file or directory.
(gdb) target remote 192.168.15.132:2000
Remote debugging using 192.168.15.132:2000
warning: while parsing target description (at line 11): Target description specified unknown architecture "aarch64"
warning: Could not load XML target description; ignoring
Remote register badly formatted: T051d:0000000000000000;1f:80fcffffffff0000;20:403cfdb7ffff0000;thread:pd60.d60;core:1;
here: 00000000;1f:80fcffffffff0000;20:403cfdb7ffff0000;thread:pd60.d60;core:1;
(gdb) q …
Run Code Online (Sandbox Code Playgroud)

debugging arm gdbserver

6
推荐指数
2
解决办法
6522
查看次数

在 Docker 内部运行时,GDBServer 未启动或侦听端口

我试图在 Docker 容器内编译一个“hello world”Rust 程序,然后使用 GDBServer 和 CLion 远程调试它,但我认为gdbserver启动不正确。当我启动它时,我没有收到我期望的“进程已启动”和“正在侦听端口...”消息;我什么也没得到。

我已经在家庭网络上使用 Raspberry Pi 成功完成了此操作,但在使用 Docker 时无法使其工作。

我的最终目标是在 Digital Ocean Droplet 上部署此 Docker 容器,并从本地计算机进行远程调试。目前,我已在本地计算机上运行 Docker。

我正在 Mac (Mojave) 上工作,运行 Docker (v18.09),并启动一个 Docker 容器,该容器是使用 Rust 构建的 Debian 镜像并gdbserver安装了. GDBServer 和 Rust 通过以下方式安装:

# install curl (needed to install rust)
apt-get update && apt-get install -y curl gdb g++-multilib lib32stdc++6 libssl-dev libncurses5-dev

# install rust + cargo nightly
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly …
Run Code Online (Sandbox Code Playgroud)

debugging gdbserver rust docker clion

6
推荐指数
1
解决办法
4900
查看次数

STM32CubeIDE只能刷一次,没有SWD调试

几年来,我一直在使用 mbed 在线编译器来创建 .bin 文件,然后像这样在命令行中使用 ST-LINK/V2 USB 加密狗刷写它们,一切都完美无缺:

st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000
Run Code Online (Sandbox Code Playgroud)

今天我下载了 STM32CubeIDE for Linux (Fedora 30) 并开始学习本教程,使用 maple mini (STM32F103CBT6)。

https://www.digikey.co.nz/en/maker/projects/getting-started-with-stm32-introduction-to-stm32cubeide/6a6c60a670c447abb90fd0fd78008697

构建项目并开始调试运行后,我得到输出:

STMicroelectronics ST-LINK GDB server. Version 5.3.2
Copyright (c) 2019, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.2.0                  
      -------------------------------------------------------------------



Log …
Run Code Online (Sandbox Code Playgroud)

stm32 gdbserver swd

6
推荐指数
1
解决办法
1万
查看次数

VS Code 启动 gdbserver

我正在尝试为 VS Code 编写一个可以gdbserver作为 preLaunchTask 启动的启动配置。

当我开始调试时,当 gdbserver 说“Listening on port XXXX”时,一切都会停止

我在网上找到了许多其他调试器方法的示例,但没有任何特定于 gdbserver 的示例。

我尝试设置isBackground无济于事true,同时尝试设置problemMatcher

我也找不到任何似乎解释如何编写自己的文档problemMatcher

那么,如何编写一个任务来启动 gdbserver 作为调试器的 preLaunchTask 的一部分?

这是我启动 gdbserver 的任务

{
    "label": "run",
    "type": "shell",
    "presentation": {
        "echo": true,
        "reveal": "always",
        "focus": false,
        "panel": "dedicated"
        },
    "options": {
        "cwd": "${workspaceRoot}/build"
    },
    "command": "ssh",
    "args": [
            "root@remote",
            "'gdbserver localhost:9091 program'"
    ]     
}
Run Code Online (Sandbox Code Playgroud)

这是我的启动配置

{
    "name": "Remote Debug",
    "type": "cppdbg",
    "request": "launch",
    "program": "${workspaceRoot}/build/program",
    "args": [],
    "stopAtEntry": false, …
Run Code Online (Sandbox Code Playgroud)

gdbserver visual-studio-code

6
推荐指数
1
解决办法
3069
查看次数