我正在尝试开始进行Microsoft的Azure领域开发。
[当我尝试调试vs代码中的任何starter projects时,它告诉我在应用程序的第一行设置了一个断点。但是,vs代码在“断点”选项卡中没有显示任何断点。
我正在Windows 10上运行带有Azure Sphere Extension 20.1的最新VS代码版本(1.44)。在Linux上也会出现相同的问题。
重现该错误:
azure-sphere-samples\Samples\HelloWorld\HelloWorld_HighLevelApp
中打开HelloWorld_HighLevelApp文件夹。Launch for Azure Sphere High-Level Applications (gdb)
对我来说这不是错误,但输出控制台显示:
Deploying image...
Starting debugger....
Process /mnt/apps/1689d8b2-c835-2e27-27ad-e894d6d15fa9/bin/app created; pid = 2233
Listening on port 2345
Remote debugging from host 192.168.35.1, port 54911
Starting CMake Hello World application...
调试控制台显示:
...
Breakpoint 1, main () at ../../main.c:45
45 {
Loaded 'target:/usr/lib/libapplibs.so.0'. Symbols loaded.
Loaded 'target:/lib/libgcc_s.so.1'. Symbols loaded.
Loaded 'target:/usr/lib/libc++runtime.so.1'. Symbols loaded.
是否有解决方案/解决此问题的计划?
Azure Sphere使用gdbserver为设备提供调试通道。 gdb的默认行为是在输入main时中断。这可能会使Windows上希望运行断点行为的人(在Visual Studio中很常见)感到困惑。对于与GDB的接口,我们有意无声地跳过在Visual Studio中输入main的断点以保持一致。您实际上可以在调试日志输出窗口中看到该断点。
对于VS Code,当您在Windows上时,我们也会跳过main上的断点。从上面的输出中看来,您正在Linux上。我已经有几周没有在Linux上使用它了,所以无法回忆起是否故意改变了行为。对我来说,在Linux上中断进入main是有意义的,因为这是使用GDB时的普遍期望,而GDB在Windows中比在Windows上更为普遍。我会检查这是否是设计使然,然后回复,但我怀疑是。