Visual Studio Code 中 GDB 调试器的问题

问题描述

我正在使用 Visual Studio Code 调试 Mac OSX 11.4 中的 Fortran 代码,使用 GDB C++ 调试器和 Visual Studio Code 中的 Fortran 断点支持。在 launch.json 中,我有以下代码

{
    "version": "0.2.0","configurations": [
        {
            "name": "Run GDB","type": "cppdbg","request": "launch","program": "${workspaceRoot}/a.out","args": [],"stopAtEntry": false,"cwd": "${workspaceRoot}","externalConsole": false,"MIMode": "gdb","prelaunchTask": "make"
        },]
}

tasks.json 中,我有以下代码

{
    "version": "2.0.0","tasks": [
        {
            "label": "make","type": "shell","command": "make","options": {
                "cwd": "${workspaceRoot}"
            }
        }
  
    ]
}

在我的 Makefile 中,我有

# variables
FC=gfortran
SRC=Parameters.f90 Globals.f90 Procedures.f90 random.f90 SimulateEarnings.f90 Grids.f90 ValueFunctions.f90 Simulations.f90 RunSimulations.f90
OBJ=${SRC:.f90=.o}

# convert all .f90 files into .o files
%.o: %.f90
    $(FC) -c -g $<

# create executable
a.out: ${OBJ}
    $(FC) ${OBJ}

# clean
clean:
    rm *.o a.out

# execute
run:
    make
    ./a.out

我可以在终端中毫无问题地运行 makemake run。在 Visual Studio Code 中,我然后使用 F9 在代码中的某个位置放置一个断点,然后按 F5 开始调试。这样做时,会出现三个问题:

  1. 代码并不总是在我的断点处停止,我让它最终停止的唯一方法是反复重新启动调试,直到它最终停止。
  2. 一旦它最终停止,所有变量的值都不会显示。我能找到它们的唯一方法是手动将变量添加到“WATCH”。
  3. “WATCH”中某些变量的值不正确。如果我在将变量打印到控制台的代码行上设置断点,则打印到控制台的值与“WATCH”中显示的值不匹配。

在此先感谢您的帮助,对这么长的问题深表歉意!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)