У меня только один вопрос: какого хрена?
Я и про несоответствие реальной точки останова отображению (не впервые такое уже вижу), и про то, почему вообще у меня уже 4-ый раз подряд программа упорно заходит в закомменченную функцию. Пробовал несколько раз перезапускать VS Code, не помогло. Также удалял все .exe и .o файлы в папке проекта (последних, впрочем, и так не было).
Кстати, вопрос вдогонку: можно как-то сделать, чтобы отладчик GDB не останавливался на вызовах функции free()? Сейчас он постоянно это делает, и я ничего не могу с этим сделать, очень мешает.
Вот содержимое моих конгфигов:
tasks.json
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe build main.cpp",
"command": "E:\\msys64\\ucrt64\\bin\\g++.exe",
"args": [
"-std=c++20",
"-fdiagnostics-color=always",
"-g",
"${file}",
"alphacrypt\\md5.c",
"alphacrypt\\acp.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "Task generated by Debugger."
},
{
"type": "cppbuild",
"label": "C: gcc.exe build main.c",
"command": "E:\\msys64\\ucrt64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"${file}",
"alphacrypt\\md5.c",
"alphacrypt\\acp.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}c.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [
"file.txt",
"-o",
"out.txt"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal"
},
{
"name": "(Windows) Build & Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}c.exe",
"args": [
"file.txt",
"-o",
"out.txt"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal",
"preLaunchTask": "C: gcc.exe build main.c"
},
{
"name": "C/C++: g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:\\msys64\\ucrt64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe build main.cpp"
},
{
"name": "C: gcc.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:\\msys64\\ucrt64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C: gcc.exe build main.c"
}
]
}
Отладку я запускаю так: выбираю в редакторе вкладку с файлом main.c и нажимаю на кнопку в левой панели отладки с зелёным треугольником, при этом в списке выбран пункт "C: gcc.exe build and debug active file".
Вывод в терминале:
PS C:\Users\Alex\Documents\cpp\Lessons> & 'c:\Users\Alex\.vscode\extensions\ms-vscode.cpptools-1.18.5-win32-x64\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-vuh1vkuc.4aa' '--stdout=Microsoft-MIEngine-Out-jgtyslgs.41t' '--stderr=Microsoft-MIEngine-Error-gfblkaem.lmp' '--pid=Microsoft-MIEngine-Pid-txrdgupb.5ud' '--dbgExe=E:\msys64\ucrt64\bin\gdb.exe' '--interpreter=mi'