2012-03-12 10 views
7

Ho un programma che mi piacerebbe per eseguire il debug con gdb tramite emacs. Per poter eseguire le versioni di sviluppo di questo programma, ho uno script di shell che posso creare per impostare l'ambiente di chiamata per vedere le librerie giuste, ecc. Quello che non riesco a risolvere è come chiedere a emacs/gud di trovare questo file prima di eseguire gdb.Impostazione dell'ambiente di gdb quando si esegue attraverso Emacs

Ho provato con un comando come "fonte env.sourceme & & gdb mio_programma", ma emacs lamenta che non sa cosa significa "sorgente" si intende. Immagino che non stia davvero girando gdb in una shell, quindi questo tipo di trucco non funzionerà.

Quindi, come posso convincere GUD/emacs/qualunque cosa per eseguire gdb nel mio ambiente personalizzato? Ho una soluzione hacky in atto, ma mi sento come se mi dovessi perdere qualcosa.

risposta

3

Qual è la vostra soluzione hacky?

perché non si basta avere uno script wrapper che le fonti env.sourceme e quindi eseguire gdb?

#!/usr/bin/env bash 

source env.sourceme 
gdb -i=mi $1 
+0

Questa è essenzialmente la mia "soluzione hacky";) In realtà è uno scopo più generale in quanto eseguirà qualsiasi comando (tramite '$ *'), ma lo stesso in spirito. Immagino di essere solo sorpreso che non sia una cosa semplice da procurarmi per procurarmi il file ... – abingham

3

È possibile modificare l'ambiente Emacs utilizzando setenv, sia in modo interattivo (M-x setenv) oa livello di programmazione:

(setenv "FOOBAR" "whatever") 

Quando si esegue gud-gdb, qualunque cosa si imposta utilizzando setenv sarà passato al processo gdb.

+0

Credo che dovrei chiarire. Vorrei sfruttare lo script di shell esistente (che è generato da una build e quindi relativamente conveniente) piuttosto che dover duplicare le sue funzionalità per motivi di emacs. E in ogni caso, non voglio modificare la variabile di ambiente per il mio intero processo emacs, solo per il sottoprocesso di gdb. – abingham

5

gdb ha una propria sintassi per setting environment variables:

set environment varname [=value] 

Invece di uno script di shell, scrivere le definizioni di variabili in un file utilizzando la sintassi di cui sopra, quindi source il file da una sessione in esecuzione gdb. Si noti che questo non è built-in source comando, ma gdb's own, così naturalmente l'ambiente bash stile di bash definizioni di variabili non funzioneranno.

+1

Simile al mio commento sulla risposta precedente, vorrei sfruttare la mia infrastruttura esistente piuttosto che scrivere ancora più codice per placare gdb. – abingham

+0

Questo funziona per me se inserisco un elenco di righe "set environment varname [= value]" in un file e quindi eseguo 'source file' in emacs gdb. – 719016

+0

@ 200508519211022689616937 Oh, bene, perché è esattamente quello che ho scritto nella mia risposta :-) [Emacs gud-gdb esegue semplicemente gdb.] – Thomas

Problemi correlati