2012-03-12 5 views
7

emacs를 통해 gdb로 디버깅하고 싶은 프로그램이 있습니다. 이 프로그램의 개발 버전을 실행하기 위해 올바른 라이브러리 등을 볼 수있는 호출 환경을 설정하는 소스 코드가있는 쉘 스크립트가 있습니다. 정렬 할 수없는 것은 emacs/gud에 소스를 지정하는 방법입니다. gdb를 실행하기 전에 파일을 만드십시오.emacs를 통해 실행할 때 gdb 환경 설정하기

"source env.sourceme & & gdb my_program"과 같은 명령을 사용하려고했지만 emacs는 "소스"의 의미를 모른다고 불평합니다. 나는 쉘에서 gdb를 실제로 실행하지 않는다고 생각하기 때문에 이러한 종류의 트릭은 작동하지 않습니다.

그렇다면 gud/emacs/기타 사용자 환경에서 gdb를 실행하는 방법을 어떻게 알 수 있습니까? 나는 제자리에 해킹 된 솔루션을 가지고 있지만 뭔가를 놓치고 있어야하는 것처럼 느껴집니다.

답변

3

해킹 솔루션은 무엇입니까?

env.sourceme을 소스로하고 gdb를 실행하는 래퍼 스크립트가 없습니까? 위의 구문을 사용하여 파일에 변수 정의를 실행중인 GDB 세션에서, 다음 source 파일을 작성하는 대신 쉘 스크립트의

set environment varname [=value] 

:

#!/usr/bin/env bash 

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

그건 본질적으로 제 "해킹 된 솔루션"입니다;) 실제로는 더 일반적인 목적이지만 어떤 명령도 ('$ * '를 통해) 실행 하겠지만 정신과도 같습니다. 나는 그저 나를 위해 파일을 근원화하는 것을 얻는 것이 간단한 것이 아니라고 놀랍다 ... – abingham

3

당신은 대화식 (M-x setenv) 또는 프로그래밍, setenv를 사용하여 이맥스 환경을 수정할 수 있습니다 : 당신이 setenv을 사용하여 설정 어떤

(setenv "FOOBAR" "whatever") 

당신이 gud-gdb을 실행

gdb 프로세스에 전달됩니다.

+0

분명히해야 할 것 같습니다. 나는 이맥스를 위해서 그 기능을 복제 할 필요없이 기존의 쉘 스크립트 (빌드에 의해 생성되어 비교적 편리하다)를 활용하고 싶다. 그리고 어떤 경우에는 gdb 하위 프로세스를 위해서만 이맥스 프로세스 전체의 환경 변수를 변경하고 싶지 않습니다. – abingham

5

GDB는 setting environment variables에 대한 고유 한 구문이 있습니다. 이것은 bash에 내장 된 source 명령이 아니라 gdb's own이므로 자연스럽게 bash 스타일 환경 변수 정의가 작동하지 않음에 유의하십시오.

+1

이전 응답에 대한 내 의견과 비슷하게, 나는 더 많은 코드를 작성하기보다는 기존 인프라를 활용하고 싶다. 진정시키다. – abingham

+0

"set environment varname [= value]"라인을 파일에 넣은 다음 emacs gdb에서'source file'을 실행하면이 기능이 작동합니다. – 719016

+0

@ 200508519211022689616937 오, 좋은데, 그 대답은 정확히 내가 쓴 것이기 때문에 :-) [Emacs gud-gdb는 단순히 gdb를 실행합니다.] – Thomas

관련 문제