microsoft / microsoft/vscode-cpptools

Can not show terminal inputs when break `readline()`

Offen
#10,865 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

debugger more info needed
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Environment
  • OS and version: Windows 10
  • VS Code: 1.77.3
  • C/C++ extension: v1.15.2
  • OS and version of remote machine (if applicable): Ubuntu 22.04
  • GDB / LLDB version: GNU gdb (Ubuntu 12.1-0ubuntu1~22.04) 12.1
Bug Summary and Steps to Reproduce

Bug Summary:

When use readline() and break(Shift + F5 or Ctrl + C) the program, terminal will not display inputs. (But still can execute commands).

Steps to reproduce:

  1. create echo.c:
#include <stdio.h>
#include <readline/history.h>
#include <readline/readline.h>

int main() {
  char* line = NULL;
  while (line == NULL || strcmp(line, "q") != 0) {
    line = readline("> ");
    printf("%s\n", line);
  }
  return 0;
}
  1. Press F5 to debug program.
  2. Press Shift + F5 or Ctrl + C .
  3. cppdbg terminal will not show inputs.
  4. Inputs will display normally if enter q.
Debugger Configurations
launch.json: 


{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/echo.out",
      "cwd": "${workspaceFolder}",
      "externalConsole": false,
      "MIMode": "gdb",
      "preLaunchTask": "gcc"
    }
  ]
}


task.json: 

```json
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "gcc",
      "type": "shell",
      "command": "gcc echo.c -g -lreadline -oecho.out"
    }
  ]
}


### Debugger Logs

```shell
Maybe no needs.
Other Extensions

No response

Additional Information

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere das Problem mit echo.c unter Verwendung der gezeigten launch.json und task.json. Unterbreche dann die readline()-Sitzung mit Shift+F5 oder Ctrl+C und vergleiche die Darstellung der Terminaleingaben vor und nach der Eingabe von q. Beginne damit, den cppdbg-Terminal- und Debugger-Unterbrechungspfad nachzuverfolgen; abgeschlossen ist die Arbeit, wenn Eingaben nach der Unterbrechung sichtbar bleiben und das Verhalten durch einen Regressionstest abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, vscode
Bereich
tooling
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.