2012-03-12 10 views
7

Tengo un programa que me gustaría depurar con gdb a través de emacs. Para ejecutar las versiones de desarrollo de este programa, tengo una secuencia de comandos de shell que puedo fuente que configura el entorno de llamadas para ver las bibliotecas correctas, etc. Lo que no puedo resolver es cómo pedirle a emacs/gud que ordene esto archivo antes de ejecutar gdb.Configuración del entorno de gdb al ejecutarlo a través de emacs

He intentado utilizar un comando como "fuente env.sourceme & & gdb my_program", pero emacs se queja de que no sabe lo que significa "fuente". Supongo que no está realmente ejecutando gdb en un shell, por lo que este tipo de trucos no funcionarán.

Entonces, ¿cómo puedo convencer a gud/emacs/lo que sea para ejecutar gdb en mi entorno personalizado? Tengo una solución hacky en su lugar, pero siento que me falta algo.

Respuesta

3

¿Cuál es su solución hacky?

¿Por qué no tendrías simplemente un script de envoltura que oriente env.sourceme y luego ejecutes gdb?

#!/usr/bin/env bash 

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

Esa es esencialmente mi "solución hacky";) En realidad es un propósito más general ya que ejecutará cualquier comando (a través de '$ *'), pero lo mismo en espíritu. Supongo que estoy sorprendido de que no sea sencillo obtener gud para obtener el archivo para mí ... – abingham

3

se puede modificar el entorno de Emacs usando setenv, ya sea de forma interactiva (M-x setenv) o mediante programación:

(setenv "FOOBAR" "whatever") 

Cuando se ejecuta gud-gdb, cualquier cosa que se utiliza setenv se pasará al proceso gdb.

+0

Creo que debería aclarar. Me gustaría aprovechar el script de shell existente (que es generado por una compilación y, por lo tanto, es relativamente conveniente) en lugar de tener que duplicar su funcionalidad por el bien de emacs. Y en cualquier caso, no quiero cambiar la variable de entorno para todo el proceso de emacs, solo para el subproceso gdb. – abingham

5

BGF tiene su propia sintaxis para setting environment variables:

set environment varname [=value] 

En lugar de un script de shell, escribir sus definiciones de variables en un archivo utilizando la sintaxis anterior, a continuación, source el archivo desde una sesión de GDB en ejecución. Tenga en cuenta que este no es el comando integrado de bash source, sino gdb's own, por lo que, naturalmente, las definiciones de variables de entorno estilo bash no funcionarán.

+1

Similar a mi comentario sobre la respuesta anterior, me gustaría aprovechar mi infraestructura existente en lugar de escribir aún más código para aplacar gdb. – abingham

+0

Esto funciona para mí si pongo una lista de líneas "set environment varname [= value]" en un archivo y luego ejecuto 'source file' en emacs gdb. – 719016

+0

@ 200508519211022689616937 Oh, bien, porque eso es exactamente lo que escribí en mi respuesta :-) [Emacs gud-gdb simplemente ejecuta gdb.] – Thomas

Cuestiones relacionadas