首页 > 编程问答 >无法执行二进制文件:VScode 中的执行格式错误

无法执行二进制文件:VScode 中的执行格式错误

时间:2024-05-30 17:51:18浏览次数:18  
标签:visual-studio-code debugging

在此处输入图片描述

Linux, VScode, C.

文件 pcl_digtest.elf:

elena@Elena:~/Documents/1288/pclqube$ 文件 pcl_digtest.elf pcl_digtest.elf:ELF 32 位 LSB 可执行文件,Atmel AVR 8 位,版本 1 (SYSV) (SYSV),静态链接,带 debug_info,未剥离

avr8是:/home/elena/local/avr8-gnu-toolchain-3.4.5.1522/avr8-gnu-toolchain-linux_x86_64

luanch.json 的代码如下:

version": "0.2.0",

"configurations":[

        {
            "name": "(gdb) Launch"、
            type": "cppdbg"、
            请求": "launch"、
            "program": "${workspaceFolder}/pcl_digtest.elf"、
            "cwd":"${workspaceFolder}"、
            "外部控制台":false、
            "setupCommands":[
                {
                    "description": "Enable pretty-printing for gdb"、
                    "text": "-enable-pretty-printing"、
                    "ignoreFailures": true
                },
                {
                    "description": "Set arguments to debuggee"、
                    "text": "set args -e1"、
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "run Makefile"、
            "launchCompleteCommand": "exec-run"、
                "linux":{
                    "MIMode": "gdb"、
                    "miDebuggerPath": "/usr/bin/gdb";
                },
        }
    ]
}



您知道问题出在哪里吗?

您知道问题出在哪里吗? 谢谢!

我正在尝试运行并调试一个 makefile。它运行得很好,但调试控制台中的信息是:

&"warning:GDB: Failed to set controlling terminal:Operation not permitted\n"; /bin/bash: line 1:/home/elena/Documents/1288/pclqube/pcl_digtest.elf: cannot execute binary file:执行格式错误 /bin/bash: 第 1 行:/home/elena/Documents/1288/pclqube/pcl_digtest.elf:成功 1 + Done "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-pfp2dn4s.40s" 1>"/tmp/Microsoft-MIEngine-Out-xiepqbvb.4bj"; elena@Elena:~/Documents/1288/pclqube$


错误信息表明你试图运行为 AVR 架构编译的程序 pcl_digtest.elf 在你的 Linux 系统上,该系统很可能是 x86 或 ARM 架构。 这就像试图让汽车使用喷气发动机燃料运行一样 - 架构不匹配。

为了调试你的 AVR 程序,你需要一个 AVR 模拟器或者连接到你的 Linux 系统的实际 AVR 硬件。 VS Code 和 GDB 可以与 AVR 模拟器和硬件调试器一起使用。

以下是解决该问题的步骤:

  1. 选择一个 AVR 模拟器:
  2. SimulAVR: 一个流行的开源选项。 (https://www.nongnu.org/simulavr/)
  3. avarice: 另一个功能强大的开源 AVR 模拟器。
  4. AVR Studio (Atmel Studio): Atmel(现为 Microchip)的官方 IDE 和模拟器。

  5. 安装模拟器: 按照所选模拟器的安装说明进行操作。

  6. 配置 VS Code:

  7. 安装 C/C++ 扩展: 如果你还没有安装,请安装 Microsoft 的 C/C++ 扩展。
  8. 修改 launch.json:

    • "MIMode""gdb" 更改为 "simulavr" (如果你使用 SimulAVR) 或你的模拟器的相应模式。
    • 更新 "miDebuggerPath" 以指向你的模拟器可执行文件的路径(例如,/usr/bin/simulavr)。
    • 你可能需要删除或注释掉 "program" 设置,因为模拟器通常直接从 ELF 文件加载程序。
  9. 启动调试会话: 现在你应该能够在 VS Code 中构建你的项目并启动调试会话,它将使用模拟器运行和调试你的 AVR 代码。

其他提示:

  • 确保你的 AVR 工具链 (例如,avr-gcc, avr-gdb) 已正确安装并添加到你的路径中。
  • 查阅你的模拟器文档,了解如何配置和使用它,因为它可能需要特定的设置或命令行选项。

通过这些步骤,你应该能够成功调试你的 AVR 代码!

标签:visual-studio-code,debugging
From: 78550367

相关文章

  • Nginx R31 doc-17-debugging 调试
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • Advanced .Net Debugging 8:线程同步
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第八篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第六章【同步】。我们经常写一些多线程的应用程序,写的多了,有关多线程的问题出现的也就多了,因此,最迫切的任务就是提高解决多线程同步问题的能力。这一节......
  • CS61B Lab2 Debugging
    实验2主要内容教你使用IDE中调试步骤,学会设置断点调试代码学以只用,学会设置断点之后,就开始改代码错误了本节需要学什么?Java配置Configration当你导入一个项目模块时,需要添加修改configration的以下内容。Junit的导入有时候运行的时候会出现“junit不存在等情况”这时......
  • Advanced .Net Debugging 1:你必须知道的调试工具
    Advanced.NetDebugging1:你必须知道的调试工具合集-Net高级调试(基于原著)(7) 1.Advanced.NetDebugging1:你必须知道的调试工具01-242.Advanced.NetDebugging2:CLR基础02-273.Advanced.NetDebugging3:基本调试任务(调试目标、符号、控制调试目标执行和设置断点)03-04......
  • Advanced .Net Debugging 7:托管堆与垃圾收集
    一、简介这是我的《Advanced.NetDebugging》这个系列的第七篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收。软件系统的内存管理方式有两种,第一种是手动管理内存,这种方式容易产生一些问题产生,比如:悬空指针......
  • GRPC - Debugging: Using Wireshark
      ......
  • GRPC - Debugging: Server Reflection
      ......
  • Advanced .Net Debugging 6:程序集加载器
    一、简介这是我的《Advanced.NetDebugging》这个系列的第六篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第四章。这章主要讲的是程序集加载器,比如:CLR加载器简介、简单的程序集加载故障、加载上下文故障、互用性与DllNotFoundException和轻量级代码生成的......
  • Advanced .Net Debugging 3:基本调试任务(对象检查:内存、值类型、引用类型、数组和异常
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第四篇文章。今天这篇文章的标题虽然叫做“基本调试任务”,但是这章的内容还是挺多的。由于内容太多,故原书的第三章内容我分两篇文章来写。上一篇我们了解了一些调试技巧,比如:单步调试、下断点、过程调试等,这篇文章主......
  • Advanced .Net Debugging 3:基本调试任务(上)
    一、简介这是我的《Advanced.NetDebugging》这个系列的第三篇文章。这个系列的每篇文章写的周期都要很长,因为每篇文章都是原书的一章内容(太长的就会分开写)。再者说,原书写的有点早,有些内容还是需要修正的,调试每个案例,这都是需要时间的。今天这篇文章的标题虽然叫做“基本......