标签: gdbserver

如何在不停止运行程序的情况下关闭gdb连接

有没有办法在不停止/退出正在运行的程序的情况下退出 gdb 连接?我需要在 gdb 连接关闭后继续运行程序。

debugging gdb gdbserver

4
推荐指数
1
解决办法
2017
查看次数

在 VSCode 中使用 gdbserver 进行调试时停顿 - “无法跟踪 preLaunchTask 'docker gdb'。”

概括

我正在尝试在 docker 映像 (Ubuntu) 中调试 C++ 程序,同时在我的主机系统 (OS X) 上使用 VSCode 作为 IDE。在对 gdbserver 和 VSCode 任务进行各种修补后,我现在能够成功运行调试器,但是每次启动调试会话时,VSCode 都会挂起 10 秒,然后报告错误消息:

“无法跟踪 preLaunchTask 'docker gdb'。”

如果我点击这个错误,我可以正常地完美调试,但是每次调试时都要等待 10 秒,这让我非常沮丧。

细节

我的 Docker 映像是通过以下方式启动的,因此我的源代码安装在“app”目录中。安全设置是我在 Stack Overflow 上的其他地方找到的,需要允许 gdbserver:

docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -it -v "$(pwd):/app" -w "/app" -p 9091:9091 {imageName} /bin/bash
Run Code Online (Sandbox Code Playgroud)

当我在主机上启动调试会话时,我使用这个启动命令,将本地 gdb 连接到 docker gdbserver,并运行一个预启动任务:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Remote unit test",
        "type": "cppdbg",
        "request": "launch",
        "program": "./tests/ConfigurationTest.cpp_TestRunner",
        "miDebuggerServerAddress": "localhost:9091",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": …
Run Code Online (Sandbox Code Playgroud)

debugging gdbserver docker visual-studio-code vscode-tasks

4
推荐指数
1
解决办法
1609
查看次数

使用 Visual Studion Code 连接到 QEMU 中运行的 OP-TEE 的 gdb-server

我正在 ARM-64 中设置 op-tee。我想知道是否可以使用在 ubuntu 18.04 下运行的 Visual Studio 代码来调试它。

到目前为止,我已经能够在 QEMU 中编译和运行 op-tee。并且还能够使用命令行 gdb 连接 gdb-server(点击此链接:https : //www.op-tee.org/docs/debug/)。

现在我想使用一些 GUI 而不是 gdb。由于我正在使用 Visual Studio 代码,所以我想知道是否可以配置 vsCode 来这样做?

我试过安装 cortex-debug 扩展(我不确定它是否正确),也试过 c/c++ 调试附加。但我不能让他们工作!

这是我的 launch.json 文件:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [

    { 
        "name": "(gdb) Attach",
        "type": "cppdbg",
        "request": "attach",
        "program": "${workspaceFolder}/optee_os/out/arm/core/tee.elf",
        "miDebuggerServerAddress": "localhost:1234",
        "processId": "${command:pickProcess}",
        "MIMode": …
Run Code Online (Sandbox Code Playgroud)

debugging qemu gdbserver arm64 visual-studio-code

4
推荐指数
1
解决办法
4082
查看次数

使用CLion的GDB远程调试不起作用

这是我的情况:

  • 我可以使用终端通过以下命令进行调试:

    • gdb myprog
    • 打破myprog.c:4115
    • 运行--myarg
    • 断点有效,我可以进入程序
  • 我尝试在Fedora系统中使用CLion 16.2.2进行远程调试:

    • 在服务器中,我运行:gdbserver localhost:8080 myprog --myarg
    • 我得到以下信息:创建了流程数据;pid = 80199在端口8080上侦听
    • 在带有CLion的Linux客户端中:
    • 设置/部署/配置SFTP(上传和下载工作正常)
    • 从服务器下载所有文件
    • 编辑配置
    • 创建新的GDB远程调试:
    • GDB:默认值(捆绑)
    • 目标:tcp:193.101.144.128:8080
    • 符号文件:{空白}
    • Sysroot:{空白}
    • 路径映射:服务器路径和本地路径
    • 运行调试器
    • 在服务器终端上,我看到:
    • 从主机172.24.10.2进行远程调试(这使我相信自己已经关闭)
    • address_string = T:服务器名称:4311
    • 在CLion控制台中,我看到:
    • 调试器连接到tcp:193.101.144.128:8080(连接有效!)

尽管似乎GDB服务器和客户端之间的连接正在工作,但似乎我缺少一些东西,因为调试器工具(进入,移入,继续等)仍然显示为灰色,并且从未达到断点。

从第一个测试中,我知道我使用的断点应该可以工作。

我怀疑我在这一行中传递程序参数(--myarg)的方式:gdbserver localhost:8080 myprog --myarg它不正确,但我不知道该在哪里传递它。

我期待能够使用此出色的IDE进行调试,而不是使用终端进行调试。我很近但是被卡在这里。我真的很感谢您的帮助!

谢谢

gdb remote-debugging gdbserver clion

3
推荐指数
1
解决办法
3961
查看次数

gdb/mi gdb服务器调试

gdb mi和gdb服务器有什么区别?两者都可以用于本地调试吗?

我在使用Red Hat上的gdb服务器进行调试时遇到了问题.调试启动器停止在72%.

gdb gnu-make gdbm gdbserver

2
推荐指数
1
解决办法
1710
查看次数

使用 gdb 在 qemu 中调试时内存位置错误

我正在用汇编程序编写一个小内核。我在 QEMU 中运行它,并遇到一些错误的问题。现在我想用dbg调试内核。所以我像这样组装它:

$ nasm -g -f elf -o myos.elf myos.asm
$ objcopy --only-keep-debug myos.elf myos.sym
$ objcopy -O binary myos.elf myos.bin
Run Code Online (Sandbox Code Playgroud)

然后我在 QEMU 中运行它:

$ qemu-system-i386 -s -S myos.bin
Run Code Online (Sandbox Code Playgroud)

然后我与 gdb 连接:

$ gdb
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000fff0 in ?? ()
symbol-file myos.sym
Reading symbols from /home/sven/Projekte/myos/myos.sym...done.
Run Code Online (Sandbox Code Playgroud)

welcome我的内核中有一个指向字符串的标签。在测试时,我尝试查看该字符串,结果如下:

(gdb) x/32b welcome
0x1e <welcome>: 0x00    0xf0    0xa5    0xfe    0x00    0xf0    0x87    0xe9
0x26:   0x00    0xf0    0x6e    0xc9    0x00    0xf0    0x6e    0xc9
0x2e:   0x00    0xf0 …
Run Code Online (Sandbox Code Playgroud)

assembly gdb qemu osdev gdbserver

2
推荐指数
1
解决办法
2447
查看次数

为 Android 构建 gdb 和 gdbserver

我正在64位linux上工作,需要为我的aarch64 Android手机构建gdbserver。NDK中有预构建的gdbserver 但它使用NDK包中的python,而不是使用我的系统python,我无法安装其他python插件。

如何找到需要哪个--target和参数?我尝试了和 google 之类的“build gdbserver aarch64”或“gdbserver configure android”,但没有找到 aarch64 Android 的任何答案。--host./configure--help

对于gdb我可以使用./configure --enable-targets=all,但是有什么用gdbserver呢?是否有所有可用参数的“列表”?

这是我尝试构建gdbserver 的方法

  1. 下载gcc-arm-none-eabi-9-2019-q4-major-x86_64-linux软件包,解压并将其添加到 PATH,添加环境变量CC=arm-none-eabi-gcc, CXX=arm-none-eabi-g++,使可执行文件在 PATH 中可用
  2. 我尝试了所有这些:
    ../configure  
    ../configure --host=aarch64-linux             --target=aarch64-linux-androideabi
    ../configure --host=aarch64-linux-androideabi --target=aarch64-linux
    ../configure --host=aarch64-linux-androideabi --target=aarch64-linux-androideabi
Run Code Online (Sandbox Code Playgroud)
  1. make,结果是:
    ...
    make[3]: Nothing to be done for 'all'.
    make[3]: Leaving directory '/opt/gdb-9.1/gdb/gdbserver/build/build-libiberty-gdbserver/testsuite'
    make[2]: Leaving directory '/opt/gdb-9.1/gdb/gdbserver/build/build-libiberty-gdbserver'
    make[1]: Leaving directory '/opt/gdb-9.1/gdb/gdbserver/build'
    make: *** No rule to make target …
Run Code Online (Sandbox Code Playgroud)

gdb gdbserver android-debugging

2
推荐指数
1
解决办法
6675
查看次数

使用 Ubuntu 主机和 gdb 调试 QNX 目标

这是一个绝对初学者的问题。

我有一个 Ubuntu 14.04 主机,上面安装了 gdb 7.7.1 和一个为 qnx 交叉编译的项目。我还有一个 qnx 目标,我想在上面调试我的应用程序。

互联网上的说明告诉我gdb在 PC + 上使用任何一个gdbserver,但我没有安装 gdbserver 并且我认为我无法为 qnx 编译 gdb。我有一个叫pdebug. qnx 的说明告诉我 gdb 必须有target qnx命令,它显然不构成。

这是我所做的:

# Assuming that 255.255.255.255 is the target ip and 1234 is the port
# On target
pdebug 1234

On host
gdb
gdb> target remote 255.255.255.255:1234
Run Code Online (Sandbox Code Playgroud)

然后我收到了几个警告,然后gdb>再次警告,因为这是正常的。

我设法在我的主机和目标之间安装了一个连接,但是当我点击rungdb 时,它尝试运行我的本地应用程序副本,而不是在目标上运行它。

gdb remote-debugging qnx gdbserver

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

无法从 Visual Studio 启动 gdb 以在 Windows 上的 Linux 子系统中远程调试 Linux C++ 项目

我正在尝试从 Visual Studio 针对 Linux 的 Windows 子系统。该项目在 Visual Studio 中构建良好:

1>------ Rebuild All started: Project: LinuxConsoleApp, Configuration: Debug x64 ------
1>Cleaning remote project directory
1>Validating architecture
1>Validating sources
1>Copying sources remotely to 'localhost'
1>Starting remote build
1>Compiling sources:
1>main.cpp
1>Linking objects
1>LinuxConsoleApp.vcxproj -> C:\...\LinuxConsoleApp\bin\x64\Debug\LinuxConsoleApp.out
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Run Code Online (Sandbox Code Playgroud)

我可以从 Windows 上的 bash 命令行提示符运行它:

linux@windows-bash:/mnt/c/.../LinuxConsoleApp/bin/x64/Debug$ ./LinuxConsoleApp.out
hello from LinuxConsoleApp!
Run Code Online (Sandbox Code Playgroud)

但是,当我设置断点以从 Visual Studio 调试它时,出现错误:

“无法启动 gdb。您的系统中缺少 gdb,需要安装,请使用您系统的包管理器进行安装”

我确实在 Windows 的 Linux 子系统上安装了 gdbserver。有谁知道我还需要什么才能使它工作?提前致谢!

visual-studio gdbserver windows-subsystem-for-linux

0
推荐指数
1
解决办法
3650
查看次数