microsoft / microsoft/vscode-cpptools

Printing characters for file.peek() in watch window - debug

Aperta
#1,015 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

debugger
Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Descrizione

Typing file.peek() in the watch window under debug mode prints this message while stepping in my code: file.peek(): Couldn't find method std::ifstream::peek.

I have added a .natvis file but I am still unable to see what the peek method is analyzing in the watch window.

I also get the error Unable to step out. Operation failed with error code 0x80004004 while trying to step out (SHIFT+F11) in my code which is probably due to gdb according to this post: #215. EDIT: I corrected the link.

  • OS : Ubuntu 16.04.2 LTS
  • VSCode : Version 1.14.2
  • gdb : GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
  • vscode.cpptools-0.12.2

Any ideas on how to have file.peek() in the watch window show the strings?

Here is a sample code along with my natvis and json files:
debugFct.cpp:

#include <iostream>
#include <fstream>
using namespace std; // using only on test code

int main(){
    int numChar = 0;
    char numb;
    do {
        ++numChar;
        if (file.peek() == '\n')
            break;
        cout << numb << " ";
    }
    while(file.get(numb));
    return 0;
}

debug.natvis file placed in /usr/share/code/ folder:

<?xml version="1.0" encoding="utf-8"?>  
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">  
<Type Name="file.peek()">
    <DisplayString>{file.peek(),[1]su}</DisplayString>
</Type>
</AutoVisualizer>

launch.json:

"version": "0.2.0",
"configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/debugFct",
            "args": ["-D_GLIBCXX_DEBUG"],
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "showDisplayString": true,
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-exec -enable-pretty-printing",
                    "ignoreFailures": true
                },
                { 
                    "text": "handle SIGPIPE nostop noprint pass", 
                    "description": "ignore SIGPIPE", 
                    "ignoreFailures": true 
                }
            ]
        }
    ]

settings.json:

"files.associations": {
    "string": "cpp",
    "iostream": "cpp",
    "istream": "cpp",
    "iosfwd": "cpp"
},
"C_Cpp.intelliSenseEngine": "Default",
"code-runner.executorMap":{
    "cpp": "cd $dir && g++ $fileName -std=c++11 -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
},
"editor.minimap.enabled": false,
"vsicons.presets.tsOfficial": true,
"workbench.iconTheme": "vscode-icons"

Thank you

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con la riproduzione in debugFct.cpp e nei relativi file debug.natvis, launch.json e settings.json. Riproduci la valutazione nella finestra di osservazione usando le versioni elencate di VS Code, cpptools, Ubuntu e gdb, quindi separala dall’errore di uscita con SHIFT+F11. Il lavoro sarà considerato completato quando l’ambito dell’issue sarà confermato e sarà disponibile un modo supportato per visualizzare i caratteri sottoposti a peek oppure sarà documentata una limitazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp, vscode
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.