我正在尝试配置 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 指针如何实际引用变量的内存地址感到困惑。我可能在这里遗漏了一些东西,但是,例如,如果 int 是 32 位(如 C 中的),那么它将存储在 4 个字节中。
如果我没有记错的话,那么每个内存地址的大小往往是一个字节,因为这些通常是可寻址内存的最小单位。那么如果一个int占用4个字节,那么它不是就有4个内存地址吗?(因为它存储在 4 个 8 位内存地址上)。
如果是这样的话,那么为什么一个指针只保存一个内存地址呢?(或者更确切地说,如果它可以容纳更多内容,则在打印时仅显示一个?)。这只是存储 int 的第一个地址吗?(假设它们是连续存储的)。
我试图在网上寻找答案,但这只会导致进一步的混乱。
在处理现有的 XCode 项目时,模拟器开始持续崩溃。预览窗口不会显示当前文件,并带有红色横幅和以下错误:
MessageSendFailure: Message send failure for update
==================================
| MessageError: Connection interrupted
Run Code Online (Sandbox Code Playgroud)
我努力了:
似乎什么都不起作用。有谁知道如何解决这个问题?之前还好好的,现在好像突然就坏了。
我正在使用 XCode 13.2.1
编辑:这仅影响此应用程序。其他项目仍然运行良好
当我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)