从 C 中的文件读取数据时的 VS Code 调试问题
VS Code debugging issue when reading data from a file in C
我正在尝试在 VS Code 中调试我的代码。当我“运行”代码(右上角的按钮或 Ctrl+Alt+N)时,它工作得很好。但是当我尝试调试时,代码转到 flow==NULL 选项。
这是我的代码阅读功能:
AVLTree readData(char* file_name){
AVLTree myTree;
myTree = CreateTree();
/* Opening file stream for reading data from the file */
FILE* flow;
flow = fopen(file_name,"r");
if(flow==NULL){
printf("\nflow == NULL option\n");
printf("File Error"); exit(1);
}
else{
printf("File opened successfully\n");
}
还有我的launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Etkin dosyayı derle ve dosyada hata ayıkla",
"type": "cppdbg",
"request": "launch",
// "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"program": "${fileDirname}\indexingphotos.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe",
"setupCommands": [
{
"description": "gdb için düzgün yazdırmayı etkinleştir",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe etkin dosyayı derle"
}
]
}
我该怎么办?
此外,我是一名计算机工程专业的学生,直到现在我一直在使用 Dev C++。我正在尝试切换到 VS CODE,但它似乎比 Dev C++ 更令人困惑。我如何学习使用 VS Code(或其他现代 IDE)有什么建议吗?
您可以尝试一件事:将“launch.json”中“cwd”(当前工作目录)的值更改为您要读取文件的文件夹。例如,如果您要读取的文件位于路径“C:\Users\username\Documents\file.txt”,只需输入“cwd”:“C:\Users\username\Documents”,然后编译并运行又来了。
“launch.json”文件控制 C++ 调试器的参数,您可以在 VS 代码 here 参考中找到此类参数的完整列表,包括“cwd”。您无法读取该文件的一个可能原因是您的程序找不到该文件,因为您的文件不在您程序的搜索路径中。
我刚才遇到了同样的问题并尝试通过设置当前工作目录来解决它,尽管我不确定这是否是最好的方法。更好的方法可能是 运行 带有参数的调试器将新目录添加到搜索路径(就像你在“task.json”中使用 -I 参数所做的那样)。我找不到 gdb 的参数。但有一件事是肯定的:你必须让程序或调试器以某种方式找到文件。
我正在尝试在 VS Code 中调试我的代码。当我“运行”代码(右上角的按钮或 Ctrl+Alt+N)时,它工作得很好。但是当我尝试调试时,代码转到 flow==NULL 选项。
这是我的代码阅读功能:
AVLTree readData(char* file_name){
AVLTree myTree;
myTree = CreateTree();
/* Opening file stream for reading data from the file */
FILE* flow;
flow = fopen(file_name,"r");
if(flow==NULL){
printf("\nflow == NULL option\n");
printf("File Error"); exit(1);
}
else{
printf("File opened successfully\n");
}
还有我的launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - Etkin dosyayı derle ve dosyada hata ayıkla",
"type": "cppdbg",
"request": "launch",
// "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"program": "${fileDirname}\indexingphotos.exe",
"args": [],
"stopAtEntry": false,
"cwd": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\gdb.exe",
"setupCommands": [
{
"description": "gdb için düzgün yazdırmayı etkinleştir",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe etkin dosyayı derle"
}
]
}
我该怎么办?
此外,我是一名计算机工程专业的学生,直到现在我一直在使用 Dev C++。我正在尝试切换到 VS CODE,但它似乎比 Dev C++ 更令人困惑。我如何学习使用 VS Code(或其他现代 IDE)有什么建议吗?
您可以尝试一件事:将“launch.json”中“cwd”(当前工作目录)的值更改为您要读取文件的文件夹。例如,如果您要读取的文件位于路径“C:\Users\username\Documents\file.txt”,只需输入“cwd”:“C:\Users\username\Documents”,然后编译并运行又来了。
“launch.json”文件控制 C++ 调试器的参数,您可以在 VS 代码 here 参考中找到此类参数的完整列表,包括“cwd”。您无法读取该文件的一个可能原因是您的程序找不到该文件,因为您的文件不在您程序的搜索路径中。
我刚才遇到了同样的问题并尝试通过设置当前工作目录来解决它,尽管我不确定这是否是最好的方法。更好的方法可能是 运行 带有参数的调试器将新目录添加到搜索路径(就像你在“task.json”中使用 -I 参数所做的那样)。我找不到 gdb 的参数。但有一件事是肯定的:你必须让程序或调试器以某种方式找到文件。