En este artículo, analizaremos la configuración de VS Code necesaria para la depuración de puntos de interrupción. En primer lugar, cree un archivo launch.json que configure VS Code para iniciar el depurador GDB al comienzo del proceso de depuración . Luego, cree un archivo tasks.json que le diga a VS Code cómo construir (compilar) el programa . Finalmente, realice algunos cambios en la configuración de la consola e implemente la compilación y la depuración.
Programa :
Sea a continuación el código para fines de demostración:
C++
// C++ program to find the value of // the pow(a, b) iteratively #include <bits/stdc++.h> using namespace std; // Driver Code int main() { int a, b, pow = 1; // Input two numbers cin >> a >> b; // Iterate till b from 1 for (int i = 1; i <= b; i++) { pow = pow * a; } // Print the value cout << pow; }
Lanzamiento.json
Este archivo se refiere a información como el nombre del depurador, la ruta al depurador, el directorio del archivo CPP actual y la consola con respecto a los datos. A continuación se muestra el código en el archivo 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": "g++.exe - Build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname} \\${fileBasenameNoExtension}.exe", // There I have got error Property keys must be doublequotedjsonc "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file" } ] }
Términos importantes en launch.json : puede usar el código completo proporcionado anteriormente o, de lo contrario, puede usar el código generado en su máquina automáticamente. En ambos casos, hay que tomar algunas precauciones. En primer lugar, asegúrese de que el atributo «externalConsole» esté marcado como verdadero (comprenderemos su significado más adelante en este tema). Luego verifique si la propiedad «miDebuggerPath» apunta al depurador gdb correctamente. Analicemos estos atributos en detalle:
- nombre y tipo: estos se explican por sí mismos, se refieren al nombre y tipo de launch.json.
- solicitud: indica el tipo de archivo JSON .
- programa: almacena la dirección detallada del programa para el cual se ejecuta el archivo.json.
- cwd: indica el directorio de trabajo actual. Tenga en cuenta que todas las direcciones en el archivo launch.json están en forma general, no son específicas de ningún archivo.
- externalConsole: como no hay forma de manejar la entrada/salida en el terminal integrado de VS Code, use una consola externa para esto. Así que configúralo en verdadero .
- miDebuggerPath: apunta a la ubicación del depurador, esto variará de un usuario a otro.
- preLaunchTask: contiene el nombre del archivo tasks.json .
Pasos:
- Vaya a la pestaña Ejecutar a la izquierda de la pantalla y haga clic en Ejecutar y depurar.
- Se le pedirá que elija el depurador, elija C++ (GDB/LLDB). Tenga en cuenta que esta opción aparecerá solo si tiene MinGW instalado y configurado en su PC. (Consulte este artículo para instalar y configurar MinGW).
- Luego elija «g ++.exe: compilar y depurar el archivo activo». Se refiere al compilador g++ GNU C++.
- Después de esto, aparecerá un archivo Launch.json, puede usarlo o el que proporcioné anteriormente. Nuevamente, asegúrese de que externalConsole esté marcado como verdadero y que miDebuggerPath esté configurado correctamente.
- Después de esto, haga clic en el botón de reproducción en la parte superior izquierda de la pantalla y continúe con el archivo tasks.json .
Tareas.json :
Este archivo contiene información como los comandos utilizados para la compilación, la dirección del compilador, la misma etiqueta que en launch.json y alguna otra información. A continuación se muestra el código en el archivo task.json :
{ "version": "2.0.0", "tasks": [ { "type": "shell", "label": "C/C++: g++.exe build active file", "command": "C:\\MinGW\\bin\\g++.exe", "args": [ "-std=c++11", "-O2", "-Wall", "-g", "${file}", "-o", "${fileDirname} \\ ${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$gcc" ], "group": { "isDefault": true, "kind": "build" } } ] }
Términos importantes en task.json : el archivo tasks.json mencionado anteriormentese puede usar completamente sin precaución. Sin embargo, lo único que debe tener en cuenta es que la etiqueta de tasks.json debe coincidir con preLaunchTask de Launch.json. Analicemos algunos términos con más detalle:
- etiqueta: esto es exclusivo de un archivo tasks.json y lo utiliza launch.json para llamar a tasks.json antes de su ejecución.
- comando : esto apunta a la aplicación del compilador g ++, ya que se usará en la compilación
- args: estos argumentos junto con el comando cuando se concatenan parecen ser exactamente el comando que usamos para la compilación del archivo CPP y la creación del archivo ejecutable como:
g++ -std=c++11 -O2 -Wall ${archivo} -o ${fileDirname}\\${fileBasenameNoExtension}.exe
Pasos:
- Desde el último paso de launch.json habíamos hecho clic en el botón de reproducción en la parte superior izquierda, ahora aparece un cuadro de diálogo que dice que no hay ningún archivo tasks.json en el directorio actual. Por lo tanto, necesitamos crear uno, así que haga clic en Configurar tarea .
- Luego haga clic en Crear archivo tasks.json a partir de una plantilla .
- Luego haga clic en Otros .
- Pegue el código proporcionado anteriormente en el archivo tasks.json recién creado. Asegúrese de eliminar el código existente antes de hacerlo.
Ajustes de la consola
Pasos:
- Un punto que ya está cubierto es que externalConsole en launch.json tiene que ser verdadero .
- Ahora, incluya el archivo de encabezado conio.h en nuestro programa y llame al método get-character al final de nuestra función main() . Esto evitará que el símbolo del sistema desaparezca inmediatamente después de que se complete la ejecución para que tengamos tiempo de examinar la salida hasta que presionemos cualquier carácter. Ahora el código se convierte en:
C++
// C++ program to find the value of // the pow(a, b) iteratively #include <bits/stdc++.h> #include <conio.h> using namespace std; // Driver Code int main() { int a, b, pow = 1; // Input two numbers cin >> a >> b; // Iterate till b from 1 for (int i = 1; i <= b; i++) { pow = pow * a; } // Print the value cout << pow; _getch(); }
- Coloque un punto de interrupción rojo en alguna línea de código que desee examinar/depurar.
- Luego hacemos clic en el botón de reproducción en la parte superior izquierda de la pantalla para iniciar la compilación.
Depuración de puntos de interrupción :
Pasos:
- En el símbolo del sistema que aparece, ingresamos la entrada requerida y presionamos enter .
- Notamos que la ejecución comienza y se detiene en el punto de interrupción mencionado .
- Ahora hay algunas opciones, podemos continuar, pasar por alto, entrar, salir o reiniciar la ejecución. Puedes hacer lo que quieras para depurar tu código.
- Además, observe el valor de todas las variables en ese momento de ejecución a la izquierda de la pantalla .
- Depure como quiera y tanto como quiera, luego, después de que termine toda la ejecución , vaya al símbolo del sistema y observe el resultado allí .
- Una vez que haya terminado de examinar la salida, presione cualquier tecla para cerrar el símbolo del sistema.