[완료]이맥스(emacs), 비쥬얼 스튜디오 디버깅 질문입니다.

withtw의 이미지

이맥스에서 비쥬얼스튜디오 프로젝트(VS2003, VS2005, VS2008등...)를
브레이크 포인트 걸어서 실시간 디버깅하는 방법을 알고 싶습니다.
컴파일하는 것까지는 찾았는데 실시간 디버깅하는 것은 찾지 못했습니다.
이것만 알면 완전히 이맥스로 넘어올수 있을것 같습니다.
도움좀 부탁합니다.

dreamstorm의 이미지

msvc 로 빌드한놈은 msvc 로 디버깅하는게 제일 편합니다.
그외 ms 에서 내놓은 디버거들이 몇개 있는데 그중에 cdb 를 쓰면 emacs 와 연동이 가능하긴 하지만
아무래도 gdb 쓰는것처럼 시원하게 쓰기는 힘들더군요.

emacs+cdb 는 http://www.emacswiki.org/emacs/cdb-gud.el 참고하시면 되겠습니다.

withtw의 이미지

비쥬얼스튜디오의 환경을 이맥스에서 똑같이 구현하는 것은 불가능해 보이네요.
천만다행으로 다른 방법을 구현해 놓은 사이트를 찾았습니다.
이 방법의 장점은 아래와 같습니다.
- 이맥스와 비쥬얼스튜디오간의 단축키(F3 또는 M-`)를 이용한 편리한 전환(현재 파일의 현재 라인으로)
- 이맥스에서 단축키(F9)를 이용해 브레이크 포인터 지정이 가능
- 이맥스에서 단축키(F5)를 이용해 디버깅 시작이 가능(비쥬얼스튜디오로 자동전환)

아래에 내용을 정리했습니다. 개인적인 보관용으로 작성한 것이라 반말투입니다.
아래 사이트에 소스도 같이 공개되어 있으니 찬찬히 분석해서 수정하면 원하는 기능을 더 넣을수도 있겠네요.
ECB등과 같이 사용하면 완벽할것 같습니다.
비슷한 기능을 하는 VisEmacs도 있습니다만 이것은 비쥬얼스튜디오에서 이맥스로의 이동만 가능하고,
자동으로 설정해두면 무조건 이맥스로 전환되버리니 오히려 불편하더군요.

-----------------------------------------------------------------------------

해당 비쥬얼스튜디오 버전 = VS2003, VS2005, VS2008(VS2005만 실제로 해봤다.)

사이트 주소 = http://tulrich.com/geekstuff/
(위 사이트에서 "Visual Studio .NET sanity" 부분에서 "DevEnvCommand.exe", "devenv-tricks.el" 두 파일을 다운받는다.)

<< 이맥스에서 >>

1. "DevEnvCommand.exe" 파일을 윈도우즈 시스템 폴더나 PATH가 걸려있는 폴더에 복사한다.

2. "devenv-tricks.el" 파일을 "~/.emacs.d" 폴더로 복사한다.

3. ".emacs" 파일에 아래 코드를 추가한다.
(load "~/.emacs.d/devenv-tricks.el")

참고: 원래 파일에는 비쥬얼스튜디오로 현재파일을 전환하는
단축키가 F3으로 되어 있는데 아무래도 불편하여 "M-`"키로
바꾸어 사용하고 있다. 원래 "M-`"키는 Emacs의 메뉴항목을
미니버퍼에 표시해주는 기능인데 자주사용하지 않으므로 여기서
대신 써버리기로 한다. "devenv-tricks.el" 파일을 열어서
"F3"으로 지정하는 부분을 아래코드로 바꿔주면 된다.

;; (global-set-key [f3] 'switch-to-devenv) // F3대신
(global-set-key "\M-`" 'switch-to-devenv) // M-`로 바꾼다.

<< 비쥬얼스튜디오에서 >>

1. 외부도구로 Emacs를 등록한다.
가. "도구->외부도구" 메뉴를 선택한다.
나. "추가" 버튼을 클릭하고 각 란에 아래와 같이 입력한다.
- 제목 = emacs
- 명령 = C:\Program Files\Emacs\emacs\bin\emacsclientw.exe
- 인수 = -n +$(CurLine) $(ItemPath)
다. "확인"버튼을 눌러 저장한다.

2. 외부도구로 등록한 Emacs에 단축키를 할당한다.
가. "도구->옵션" 메뉴를 선택한다.
나. "환경->키보드" 트리를 선택한다.
다. "다음 문자열을 포함하는 명령 표시(C)"에 "외부"를 입력하고
라. "도구.외부명령?"에 단축키를 할당한다.("?"는 메뉴에 표시되는 순서를 나타내는 번호)
(여기 단축키도 "M-`"로 설정한다.)

* 이맥스에서 비쥬얼스튜디오로 전환할 때는 비쥬얼스튜디오가 실행되어 있어야 한다.

withtw의 이미지

혹시 몰라서 컴파일에 대한 내용도 달아놓습니다.
컴파일은 아래의 링크를 참고하시면 되겠습니다.
http://www.emacswiki.org/cgi-bin/wiki/CompileCommandForDotNet

(현재 코딩중인 파일이 속하는 프로젝트를 자동으로 찾아서 컴파일하도록 하는
소스를 다른분이 해놓은걸 찾긴 했습니다만, lisp언어의 지식이 부족하고
시간도 부족하여 사용하지 못하고 있네요. 정리되면 업데이트 할까 합니다.)

soungno의 이미지

VS2005 Emacs key map 사용중이지만 그래도 Emacs의 에디터 기능은 항상 아쉽더군요
이방법으로 코딩은 Emacs에서 실행, 디버깅 등은 VS에서 가능해지겠군요
감사합니다.

잘 가야지.

beonit의 이미지

vs2010 professional 에서 사용하고 있는데 잘 동작 합니다.

beonit의 이미지

http://www.emacswiki.org/emacs/MSVisualStudio
이맥스 위키에 잘 정리되어 있군요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.