From 0431f3b65dd68c57f4d3ca407ac4f495e795872a Mon Sep 17 00:00:00 2001 From: dragos-niculescu Date: Thu, 14 Mar 2024 17:12:44 +0200 Subject: [PATCH 1/2] add vscode guide --- .../content/operatii-memorie-gdb/README.md | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/laborator/content/operatii-memorie-gdb/README.md b/laborator/content/operatii-memorie-gdb/README.md index 9c7f947a..d311ee7f 100644 --- a/laborator/content/operatii-memorie-gdb/README.md +++ b/laborator/content/operatii-memorie-gdb/README.md @@ -568,3 +568,58 @@ set context-sections 'regs code expressions' set show-flags on set dereference-limit 1 ``` + +### **9. Configurare vscode cu gdb** +> **Configurare:** +> - extensii de instalat: Makefile tools, x86 and x86_64 Assembly, GDB Debug (by DamianKoper) +> - Terminal/Configure Default Build Task - se editează `.vscode/tasks.json`, la commandă se trece make all + +```json +"command": "make", + "args": [ + "all", + "" + ], + "options": { + "cwd": "${fileDirname}" + }, + "group": { + "kind": "build", + "isDefault": true + }, +``` +> - la tastele Ctrl-Shift-B se lansează comanda make all, îar în terminal se poate da Ctrl-Click pe numele fișierului cu eroare +> - Fie se tastează F5 pentru a demara debug, fie se editează direct `.vscode/launch.json`; trebuie să conțină +```json +"stopAtEntry": true, + "cwd": "/tmp/01-hello-world", + "program": "/tmp/01-hello-world/hello", + "miDebuggerPath": "gdb", + "args": ["<", "1.in"], + ``` +> - în exemplul de mai sus la debug vrem stdin dintr-un fișier `1.in` +> - la comanda F5, debuggerul trebuie să pornească și să se oprească pe prima instrucțiune; cu Ctrl-Shift-D activăm fereastra de debug +> - dacă avem module C, în acele module la buton dreapta apare opțiunea 'Disasembly window' + +> **Operare:** +> - Se pot pune breakpointuri cu click dreapta în coloana din stânga numărului de line +> - în debug window (Ctrl-Shift-D), se recomandă activarea Variables, Watch, și Call Stack +> - Variables/Locals - apar variabilele din funcțiile C +> - Variables/Rergisters/CPU - registrele pe 32 biți +> - Watch/+ se adaugă `print $eflags` pentru a vedea flagurile actualizate +> - În modul debug, cu click dreapta în sursă, se poate deschide 'Open disassembly view' +> - În disasembly mode se pot pune breakpointuri în coloana din stânga adreselor; F10, F11 și Shift-F11 merg +> - În fereastra Terminal apar stdout și stdin ale progamului +> - În fereastra Debug Console apare promptul gdb; toate comenzile trebuie precedate de backquote `` ` `` + +> **Hotkeys** +> - Ctrl-Shift-D debug window +> - F5 start debugging, și continuă +> - F10 step over - execută toată funcția +> - F11 step into - intră în funcții +> - Shift-F11 step out - iese din apelul curent + +#### Links +- [Using C++ on Linux in VS Code](https://code.visualstudio.com/docs/cpp/config-linux) +- [Debug C++ in Visual Studio Code](https://code.visualstudio.com/docs/cpp/cpp-debug) +- [How to use GDB with VS Code](https://www.muchen.ca/documents/CPEN411/vscode-debug.html) From bf80b788ed14974f01c3bb7693d5a76e83650880 Mon Sep 17 00:00:00 2001 From: dragos-niculescu Date: Thu, 14 Mar 2024 18:03:23 +0200 Subject: [PATCH 2/2] Update README.md --- laborator/content/operatii-memorie-gdb/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/laborator/content/operatii-memorie-gdb/README.md b/laborator/content/operatii-memorie-gdb/README.md index d311ee7f..a96810b5 100644 --- a/laborator/content/operatii-memorie-gdb/README.md +++ b/laborator/content/operatii-memorie-gdb/README.md @@ -595,9 +595,9 @@ set dereference-limit 1 "cwd": "/tmp/01-hello-world", "program": "/tmp/01-hello-world/hello", "miDebuggerPath": "gdb", - "args": ["<", "1.in"], + "args": ["<", "1.in"], ``` -> - în exemplul de mai sus la debug vrem stdin dintr-un fișier `1.in` +> - în exemplul de mai sus la debug vrem stdin dintr-un fișier `1.in` > - la comanda F5, debuggerul trebuie să pornească și să se oprească pe prima instrucțiune; cu Ctrl-Shift-D activăm fereastra de debug > - dacă avem module C, în acele module la buton dreapta apare opțiunea 'Disasembly window' @@ -607,7 +607,7 @@ set dereference-limit 1 > - Variables/Locals - apar variabilele din funcțiile C > - Variables/Rergisters/CPU - registrele pe 32 biți > - Watch/+ se adaugă `print $eflags` pentru a vedea flagurile actualizate -> - În modul debug, cu click dreapta în sursă, se poate deschide 'Open disassembly view' +> - În mod debug, cu click dreapta în sursă, se poate deschide 'Open disassembly view' > - În disasembly mode se pot pune breakpointuri în coloana din stânga adreselor; F10, F11 și Shift-F11 merg > - În fereastra Terminal apar stdout și stdin ale progamului > - În fereastra Debug Console apare promptul gdb; toate comenzile trebuie precedate de backquote `` ` `` @@ -619,7 +619,8 @@ set dereference-limit 1 > - F11 step into - intră în funcții > - Shift-F11 step out - iese din apelul curent -#### Links +#### Links - [Using C++ on Linux in VS Code](https://code.visualstudio.com/docs/cpp/config-linux) - [Debug C++ in Visual Studio Code](https://code.visualstudio.com/docs/cpp/cpp-debug) - [How to use GDB with VS Code](https://www.muchen.ca/documents/CPEN411/vscode-debug.html) +