2010-11-21 8 views
6

Sono interessato a creare un programma che utilizzi il codice C# e mi permetta di eseguire l'esecuzione di quel codice una riga dopo l'altra: un debugger.Voglio fare il mio debugger C#: come si fa? Quali strumenti dovrei usare?

Come farei per questo progetto senza dover scrivere un intero compilatore C#? Sto usando Microsoft Visual Studio, ma voglio che il mio software sia indipendente dall'implementazione del debugger possibile.

+0

Scrivere un'alternativa di Visual Studio? –

risposta

5

Stai cercando ICorDebug, l'API di debug gestita.
È possibile utilizzare csc.exe per compilare il codice (questo è incluso in un'installazione standard di .Net Framework e incluso nello CSharpCodeProvider class), quindi eseguire l'assembly, collegare il debugger e scorrere il codice.

Nota che probabilmente avrai ancora bisogno di un parser C# per capire dove ti trovi nella fonte.
Il file PDB conterrà alcune di queste informazioni; Non sono sicuro di quanto.

Si noti che la maggior parte delle funzionalità del debugger di VS, che diamo per scontate (in particolare la finestra Watch e le descrizioni variabili) richiederà una dolorosa re-implementazione. (Func-eval s)

+5

Non hai bisogno di un parser solo per fare un giro. Il file PDB contiene tutte le informazioni su quale intervallo di testo corrisponde a quale "punto di sequenza". (Che è diverso dalla definizione C di "punto di sequenza", quindi le virgolette.) È necessario un parser se si desidera una finestra di controllo, un valutatore di espressioni e così via, ma ovviamente è necessario solo analizzare le espressioni. Se decidi di non consentire lambda, allora questo è un sottoinsieme piuttosto piccolo da analizzare. –

+0

@Eric: Grazie; Me lo stavo chiedendo. VS non usa davvero un parser per visualizzare i breakpoint? – SLaks

+0

Ovviamente, è necessario un parser per i dati. – SLaks

Problemi correlati