小编Jr7*_*795的帖子

启动调试会话时 MacOS 上的 VSCode LLDB 错误

我正在尝试配置 VSCode 以在 MacOS 上编译/调试 C++ 程序。我正在使用以下 launch.json 文件:

在此处输入图片说明

当我尝试启动调试会话时,出现以下错误:

Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
ERROR: Unable to start debugging. Unexpected LLDB output from command "-exec-run". process 
exited with status -1 (attach failed ((os/kern) invalid argument))
The program '/path/to/Development/C++/helloworld/main' has exited with code 42 
(0x0000002a).
Run Code Online (Sandbox Code Playgroud)

值得一提的是,我使用的是 M1 Macbook,所以 x86_64 不是正确的架构。我假设这是错误的原因。

我似乎在网上的任何地方都找不到对此错误的任何参考,有谁知道我该如何解决这个问题?

编辑:添加“targetArchitecture”:“ARM64”删除了警告,但没有修复错误。

c++ lldb visual-studio-code vscode-debugger

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

指针如何引用多字节变量?

我对 C 指针如何实际引用变量的内存地址感到困惑。我可能在这里遗漏了一些东西,但是,例如,如果 int 是 32 位(如 C 中的),那么它将存储在 4 个字节中。

如果我没有记错的话,那么每个内存地址的大小往往是一个字节,因为这些通常是可寻址内存的最小单位。那么如果一个int占用4个字节,那么它不是就有4个内存地址吗?(因为它存储在 4 个 8 位内存地址上)。

如果是这样的话,那么为什么一个指针只保存一个内存地址呢?(或者更确切地说,如果它可以容纳更多内容,则在打印时仅显示一个?)。这只是存储 int 的第一个地址吗?(假设它们是连续存储的)。

我试图在网上寻找答案,但这只会导致进一步的混乱。

c pointers memory-address

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

XCode 13 SwiftUI“无法在此文件中预览 - 更新消息发送失败”

在处理现有的 XCode 项目时,模拟器开始持续崩溃。预览窗口不会显示当前文件,并带有红色横幅和以下错误:

MessageSendFailure: Message send failure for update
==================================
|  MessageError: Connection interrupted
Run Code Online (Sandbox Code Playgroud)

我努力了:

  • 重新启动 XCode
  • 重新启动 Mac
  • 清理项目
  • 删除派生数据
  • 删除本地副本并从 GitHub 克隆

似乎什么都不起作用。有谁知道如何解决这个问题?之前还好好的,现在好像突然就坏了。

我正在使用 XCode 13.2.1

编辑:这仅影响此应用程序。其他项目仍然运行良好

xcode swiftui

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

如何使用printf将指针值格式化为0x0000 ...?

当我printf用来打印指针值时,它们以以下格式显示: 000000000066FE14。我希望它们以以下0x格式显示:0x66FE14

这是我编写的用于打印指针值的简单测试程序:

#include <stdio.h>

int main() {
    int x = 4;
    int *xAddress = &x;

    printf("Address of x: %p\n", xAddress);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生输出:

Address of x: 000000000066FE14
Run Code Online (Sandbox Code Playgroud)

c printf pointers

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