<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY appversion "0.5.0">
<!ENTITY manrevision "2.0">
<!ENTITY date "February 2008">
<!ENTITY app "Nemiver">
<!ENTITY appcmd "nemiver">
<!ENTITY website "http://www.gnome.org/projects/nemiver/">
]>
<!--
(Do not remove this comment block.)
Maintained by the GNOME Documentation Project
http://developer.GNOME.org/projects/gdp
Template version: 2.0 beta
Template last modified Jan 30, 2002

-->
<!-- =============Document Header ============================= -->
<?chunk-depth 2?>
<article id="index" lang="ko">
  <!-- please do not change the id; for translations, change lang to -->
  <!-- appropriate code -->
  <articleinfo>
    <title>네마이버 설명서</title>
    <copyright><year>2008</year> <holder>Jonathon Jongsma</holder></copyright>
    <!-- translators: uncomment this:

    <copyright>
      <year>2003</year>
      <holder>ME-THE-TRANSLATOR (Latin translation)</holder>
    </copyright>

    -->
    <publisher role="maintainer">
      <publishername>네마이버 프로젝트</publishername>
    </publisher>
    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="legal.xml"/>
    <authorgroup>
      <author><firstname>Jonathon</firstname> <surname>Jongsma</surname> <affiliation> <orgname>그놈</orgname> </affiliation></author>
      <!-- This is appropriate place for other contributors: translators,
      maintainers,  etc. Commented out by default.
      <othercredit role="translator">
        <firstname>Latin</firstname>
        <surname>Translator 1</surname>
        <affiliation>
          <orgname>Latin Translation Team</orgname>
          <address> <email>translator@gnome.org</email> </address>
        </affiliation>
        <contrib>Latin translation</contrib>
      </othercredit>
      -->
    </authorgroup>
    <!-- According to GNU FDL, revision history is mandatory if you are -->
    <!-- modifying/reusing someone else's document.  If not, you can omit it. -->
    <revhistory>
      <!-- Remember to remove the &manrevision; entity from the revision entries other
      than the current revision. -->
      <revision><revnumber>1.0</revnumber> <date>2007</date> <revdescription>
          <para>초기 버전</para>
        </revdescription></revision>
      <revision><revnumber>2.0</revnumber> <date>2008</date> <revdescription>
          <para>0.5.0 릴리스 업데이트</para>
        </revdescription></revision>
    </revhistory>
    <releaseinfo>이 설명서는 네마이버 0.5.0 버전을 설명합니다.</releaseinfo>
    <legalnotice>
      <title>피드백</title>
      <para><application>네마이버</application> 또는 이 설명서에 대한 문제점을 보고하거나 의견이 있다면 <ulink url="http://www.gnome.org/projects/nemiver/" type="http">네마이버 프로젝트 웹사이트</ulink>를 참고하십시오.</para>
      <!-- Translators may also add here feedback address for translations -->
    </legalnotice>
    <abstract role="description">
      <para>네마이버는 그놈 데스크톱 환경용 그래픽 디버거입니다.</para>
    </abstract>
  
    <othercredit class="translator">
      <personname>
        <firstname>조성호</firstname>
      </personname>
      <email>shcho@gnome.org</email>
    </othercredit>
    <copyright>
      
        <year>2016.</year>
      
      <holder>조성호</holder>
    </copyright>
  </articleinfo>
  <indexterm><primary>네마이버</primary></indexterm>
  <indexterm><primary>디버거</primary></indexterm>
  <indexterm><primary>gdb</primary></indexterm>
  <!-- ============= Document Body ============================= -->
  <!-- ============= Introduction ============================== -->
  <sect1 id="nemiver-sect-intro">
    <title>개요</title>
    <para>네마이버는 그놈 데스크톱 환경에 잘 어울리는 독립 그래픽 디버거로 열심히 작성 중입니다. 현재 C / C++ 프로그램을 디버깅하는 잘 알려진 GNU 디버거 gdb를 백엔드로 갖추고 있습니다.</para>
    <sect2 id="nemiver-sect-perspectives">
      <title>모양새</title>
      <para>네마이버는 일반 그래픽 <interface>작업 환경</interface>으로 설계했으며 다양한 모양새를 갖출 수 있는 플러그인 시스템을 붙였습니다. 현재 제공하는 모양새는 디버거 모양새지만, 앞으로는 메모리 디버깅을 수행하는 <application>valgrind</application> 용 모양새, <application>oprofile</application>와 같은 프로파일 도구용 모양새를 추가할 계획입니다.</para>
    </sect2>
  </sect1>
  <sect1 id="nemiver-sect-getting-started">
    <title>시작하기</title>
    <para>이 장에서는 네마이버를 시작하는 방법을 설명하고 프로그램의 기본 모양새를 보여드립니다.</para>
    <sect2 id="nemiver-sect-starting">
      <title>네마이버 시작하기</title>
      <para>다음 방법으로 네마이버를 시작할 수 있습니다:</para>
      <variablelist>
        <varlistentry>
          <term><guimenu>프로그램</guimenu> 메뉴</term>
          <listitem>
            <para><menuchoice><guisubmenu>프로그래밍</guisubmenu><guimenuitem>네마이버 디버거</guimenuitem></menuchoice>를 선택하십시오.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>명령행</term>
          <listitem>
            <para><command>nemiver</command>를 입력하고 <keycap>Return</keycap>키를 누르십시오.</para>
            <tip>
              <title>추가 명령행 옵션</title>
              <para><command>nemiver --help-all</command>를 입력하여 명령행에서 네마이버에 전달할 수 있는 여러가지 옵션을 찾아볼 수 있습니다.</para>
            </tip>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>
    <sect2 id="nemiver-sect-window">
      <title>네마이버 창</title>
      <para>네마이버를 시작할 때 다음과 같은 창을 보게 됩니다:</para>
      <figure id="nemiver-window">
        <title>네마이버 창</title>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/main-window.png" format="PNG"/> </imageobject> <textobject> <phrase>네마이버 메인 창.</phrase> </textobject></mediaobject>
        </screenshot>
      </figure>
      <para><application>네마이버</application> 창에는 다음 요소가 들어있습니다:</para>
      <variablelist>
        <varlistentry>
          <term>메뉴 표시줄</term>
          <listitem>
            <para>메뉴 표시줄의 메뉴에는 <application>네마이버</application>를 활용하는데 필요한 모든 명령이 들어있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>도구 모음</term>
          <listitem>
            <para>도구 모음에는 프로그램을 디버깅할 때 그대로 실행하거나 한 단계씩 실행할 때 활용할 수 있는 기본 디버깅 옵션이 들어있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>소스 뷰 노트북</term>
          <listitem>
            <para>소스 파일을 열면 디버깅할 프로그램의 소스 파일을 이곳에 표시합니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>상태 노트북</term>
          <listitem>
            <para>상태 노트북에는 디버깅할 프로그램의 정보를 표시할 몇가지 탭이 들어있습니다. 다음 구성요소가 들어있습니다:</para>
            <variablelist>
              <varlistentry>
                <term>호출 스택</term>
                <listitem>
                  <para>디버깅하는 프로그램의 호출 스택 현재 상태를 표시합니다.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>변수</term>
                <listitem>
                  <para>모든 지역 변수 및 함수 인자, 값 및 형식을 표시합니다.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>대상 터미널</term>
                <listitem>
                  <para>디버깅하고 있는 프로그램에서 터미널에 출력할 어떤 내용을 이 탭에 표시합니다.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>중단점</term>
                <listitem>
                  <para>이 탭에서는 설정한 모든 중단점 목록을 표시합니다. 목록의 항목을 두번 누르든지, 마우스 오른쪽 단추를 누른 후 <menuchoice><guimenuitem>소스로 이동</guimenuitem></menuchoice>을 선택하여 제각각의 중단점을 설정한 소스코드를 볼 수 있습니다. 또한 이 탭에서 중단점을 삭제, 활성화, 비활성화할 수 있습니다. 중단점에 대한 추가 정보는 <xref linkend="nemiver-sect-breakpoints"/>을(를) 참고하십시오.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>레지스터</term>
                <listitem>
                  <para>이 탭에는 모든 CPU 레지스터 및 값을 표시합니다. 자세한 내용은 <xref linkend="nemiver-sect-registers"/>을(를) 참고하십시오.</para>
                </listitem>
              </varlistentry>
              <varlistentry>
                <term>메모리</term>
                <listitem>
                  <para>이 탭에서는 지정 메모리 위치의 현재 상태를 표시합니다. 자세한 내용은 <xref linkend="nemiver-sect-memory"/>을(를) 참고하십시오.</para>
                </listitem>
              </varlistentry>
            </variablelist>
          </listitem>
        </varlistentry>
      </variablelist>
    </sect2>
    <sect2 id="nemiver-sect-loading-program">
      <title>디버깅할 프로그램 선택</title>
      <para>프로그램 디버깅을 시작하는 방법에는 여러가지가 있습니다. 네마이버에서는 로컬 실행 파일을 불러오고, 로컬 핵심 파일을 불러오며, 실행 프로세스에 붙거나 원격 디버깅 서버에 연결할 수 있습니다.</para>
      <sect3 id="nemiver-sect-starting-executable">
        <title>실행 프로그램 디버깅</title>
        <sect4>
          <title>워크벤치 활용</title>
          <para>디버깅할 실행 프로그램을 선택하려면 <menuchoice><guimenu> 파일 </guimenu><guimenuitem> 실행... </guimenuitem></menuchoice>을 선택하여 다음 대화상자를 띄우십시오:</para>
          <figure id="nemiver-execute-dialog">
            <title>대화상자 실행</title>
            <screenshot>
              <mediaobject><imageobject> <imagedata fileref="figures/execute-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>실행할 실행 파일을 선택하는 대화상자</phrase> </textobject></mediaobject>
            </screenshot>
          </figure>
          <para>이 대화상자에서 디버깅할 프로그램, 명령행에서 실행시 전달할 인자 또는 옵션, 실행할 작업 디렉터리, 실행 파일을 디버깅할 때 설정해야 할 환경 변수를 설정할 수 있습니다.</para>
        </sect4>
        <sect4>
          <title>명령행 활용</title>
          <para>명령행에서 디버깅할 실행 프로그램을 시작하려면, 간단하게 실행 파일의 이름을 지정하십시오. 실행 파일의 절대 경로를 입력하거나, 이미 경로상에 있을 경우 실행 파일의 베이스 이름을 간단하게 지정할 수 있습니다. 예를 들면 <filename>/usr/bin</filename> 경로에서 이미 실행중이라면 다음 두가지의 경우 모두 유효합니다:</para>
          <itemizedlist>
            <listitem>
              <para><command>nemiver /usr/bin/progname</command></para>
            </listitem>
            <listitem>
              <para><command>nemiver progname</command></para>
            </listitem>
          </itemizedlist>
          <tip>
            <title>명령행에 옵션 전달하기</title>
            <para>디버깅할 프로그램에 명령행 옵션을 전달하려면 네마이버가 옵션을 처리하지 않도록 <command>nemiver "prognam --arg1 --arg2"</command>와 같이 따옴표로 감싸야합니다.</para>
          </tip>
        </sect4>
      </sect3>
      <sect3 id="nemiver-sect-attach">
        <title>실행 중인 프로그램 붙이기</title>
        <sect4>
          <title>워크벤치 활용</title>
          <para><menuchoice><guimenu> 파일 </guimenu><guimenuitem>실행 중인 프로그램 붙이기... </guimenuitem></menuchoice> 메뉴 항목을 선택하면 다음 대화상자가 뜹니다:</para>
          <figure id="nemiver-attach-dialog">
            <title>대화상자 붙이기</title>
            <screenshot>
              <mediaobject><imageobject> <imagedata fileref="figures/attach-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>실행 중인 프로그램을 붙이는 대화상자</phrase> </textobject></mediaobject>
            </screenshot>
          </figure>
          <para>목록의 프로세스를 선택하고 <guibutton>확인</guibutton>을 눌러 선택한 프로그램의 디버깅을 시작하십시오. 대화상자에 바로 하단 목록에 있는 텍스트 항목에 여러가지 프로세스가 나타나는데, 이 중 일부 텍스트를 입력하여 관심있는 항목을 따로 추려볼 수 있습니다.</para>
        </sect4>
        <sect4>
          <title>명령행 활용</title>
          <para>명령행에서 실행 중인 프로그램을 붙이려면 <option>--attach</option> 옵션을 활용하십시오. <option>--attach</option> 옵션에서는 PID 또는 프로세스 이름을 받아들입니다. 예를 들자면 PID 1121번으로 실행 중인 <command>foo</command> 프로세스를 디버깅한다면 <command>nemiver --attach foo</command> 명령 또는 <command>nemiver --attach 1121</command> 명령으로 시작할 수 있습니다.</para>
        </sect4>
      </sect3>
      <sect3 id="nemiver-sect-core-file">
        <title>핵심 파일 불러오기</title>
        <sect4>
          <title>워크벤치 활용</title>
          <para><menuchoice><guimenu> 파일 </guimenu><guimenuitem> 핵심 파일 불러오기... </guimenuitem></menuchoice> 메뉴 항목을 선택하면, 핵심 파일을 불러올 다음 대화상자를 띄웁니다:</para>
          <figure id="nemiver-load-core-dialog">
            <title>핵심 파일 대화상자 불러오기</title>
            <screenshot>
              <mediaobject><imageobject> <imagedata fileref="figures/load-core-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>핵심 파일을 불러오는 대화 상자</phrase> </textobject></mediaobject>
            </screenshot>
          </figure>
        </sect4>
        <sect4>
          <title>명령행 활용</title>
          <para>핵싱 파일은 명령행에서 불러올 수 없습니다.</para>
        </sect4>
      </sect3>
      <sect3 id="nemiver-sect-remote">
        <title>원격 디버깅</title>
        <para>네마이버에서는 원격 디버깅 서버에 연결할 수 있습니다.</para>
        <sect4>
          <title>워크벤치 활용</title>
          <para>원격 디버깅 서버에 연결하려면 <menuchoice><guimenu>파일</guimenu><guimenuitem>원격 대상에 연결...</guimenuitem></menuchoice>을 선택하십시오.</para>
          <screenshot>
            <mediaobject><imageobject> <imagedata fileref="figures/connect-remote-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>원격 디버깅 대화상자</phrase> </textobject></mediaobject>
          </screenshot>
          <para>불러올 실행 파일과 공유 라이브러리가 있는 위치를 선택한 다음, 원격 서버에 연결할 세부 설정을 채워주십시오.</para>
        </sect4>
        <sect4>
          <title>명령행 활용</title>
          <para>네마이버는 명령행에서 원격 서버에 연결하는 수단을 제공하지 않습니다.</para>
        </sect4>
      </sect3>
    </sect2>
  </sect1>
  <sect1 id="nemiver-sect-using">
    <title>네마이버 활용</title>
    <para>이 장에서는 네마이버를 활용하여 프로그램을 디버깅하는 방법을 설명합니다.</para>
    <sect2 id="nemiver-sect-basic-debugging">
      <title>기본 디버깅 동작</title>
      <para>기본 디버깅 동작은 주 도구 모음, <guimenu>디버깅</guimenu> 메뉴, 키보드 바로 가기 키로 접근할 수 있습니다. 대부분 일반적으로 수행하는 동작은 다음과 같습니다:</para>
      <variablelist>
        <varlistentry>
          <term>계속 진행</term>
          <listitem>
            <para>프로그램을 시작합니다. 중단점을 마주하거나 프로그램 끝에 도달하기 전까지, 또는 <action>멈춤</action>을 사용자가 눌러 직접 멈추기 전까지 실행합니다. 이 동작은 <keycap>F5</keycap>키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>다음</term>
          <listitem>
            <para>다음 구문을 실행하며 이 파일의 다음 줄에 도달하면 멈춥니다. 일부 디버거는 "한 단계 건너뛰기"라고 부릅니다. 이 동작은 <keycap>F6</keycap>키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>한 단계 실행</term>
          <listitem>
            <para>다음 구문을 실행하며 가능하다면 함수 내부로 한 단계 거쳐 접근합니다. 어떤 디버거에서는 "안쪽 단계 진입"으로 부릅니다. 이 동작은 <keycap>F7</keycap>키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>단계 벗어나기</term>
          <listitem>
            <para>현재 함수 동작 실행을 끝내고 함수 호출 코드로 돌아갔을 경우 멈춥니다. 이 동작은 <keycombo><keycap>Shift</keycap><keycap>F7</keycap></keycombo> 키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>다시 시작</term>
          <listitem>
            <para>현재 실행 파일을 다시 불러오고 처음부터 실행을 시작합니다. 이 동작은 <keycombo><keycap>Shift</keycap><keycap>F5</keycap></keycombo> 키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term>멈춤</term>
          <listitem>
            <para>프로그램 실행을 직접 멈춥니다. 이 동작은 실행 파일을 디버거에서 실행 중일 때(<action>계속</action>을 눌렀을 때라든지)만 가능합니다. 이 동작은 <keycap>F9</keycap>키로 접근할 수 있습니다.</para>
          </listitem>
        </varlistentry>
      </variablelist>
      <para>네마이버에서 실행 파일을 불러온 후에는 기본적으로 <function>main()</function> 함수에 중단점을 만들기 때문에 <function>main()</function> 함수에 도달하면 멈추고 입력을 기다립니다. 이 때 여러분은 프로그램을 한 단계씩 실행하거나, 변수를 확인하든지, 중단점을 추가로 설정할 수 있습니다(<xref linkend="nemiver-sect-breakpoints"/> 참고).</para>
    </sect2>
    <sect2 id="nemiver-sect-inspecting-variables">
      <title>변수 점검</title>
      <para>네마이버는 <interface>상태 노트북</interface>의 <interface>변수</interface> 탭에서 모든 지역 변수를 표시합니다. 여러가지 변수(또는 임의의 수식) 값을 확인하려면 <interface>변수 검사창</interface>을 활용할 수 있습니다. <interface>변수 검사창</interface>을 띄우려면 <menuchoice><guimenu>디버깅</guimenu><guimenuitem>변수 검사</guimenuitem></menuchoice>를 선택하십시오. 변수 검사창이 뜨면,  다음과 같은 창을 볼 수 있습니다:</para>
      <screenshot>
        <mediaobject><imageobject> <imagedata fileref="figures/variable-inspector.png" format="PNG"/> </imageobject> <textobject> <phrase>변수 점검창 대화상자</phrase> </textobject></mediaobject>
      </screenshot>
      <para>입력창에 변수 이름 또는 간단한 수식(<literal>pFoo-&gt;bar</literal>)을 입력할 수 있으며, 변수 이름과 적용 범위가 유효하다면 해당 수식에 대한 자세한 결과를 보여줍니다.</para>
      <para>대힌 <interface>소스 편집기</interface>에서 변수 이름을 선택하고 <interface>변수 점검창</interface>을 띄우면 선택한 변수 이름에 대한 정보 표시를 시도합니다.</para>
      <tip>
        <title>키보드 바로 가기 키</title>
        <para><keycap>F12</keycap> 키를 눌러 <interface>변수 점검창</interface>을 시작할 수 있습니다.</para>
      </tip>
      <para>네마이버에서는 다른 대화상자에서 프로그램의 모든 전역 변수 목록을 표시합니다. <interface>전역 변수</interface>를 표시하려면 <menuchoice><guimenu>디버깅</guimenu><guimenuitem>전역 변수 표시</guimenuitem></menuchoice>를 선택하거나 <keycombo><keycap>Ctrl</keycap><keycap>G</keycap></keycombo>키를 누르십시오.</para>
      <screenshot>
        <mediaobject><imageobject> <imagedata fileref="figures/global-variables-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>전역 변수 대화상자</phrase> </textobject></mediaobject>
      </screenshot>
      <warning>
        <para>어떤 프로그램(특히 C++ 프로그램)에서는 모든 전역 변수를 조회하는데 시간이 상당히 걸릴 수도 있습니다.</para>
      </warning>
    </sect2>
    <sect2 id="nemiver-sect-breakpoints">
      <title>중단점 설정</title>
      <para>네마이버에 중단점을 설정하는 방법에는 여러가지가 있습니다. 네마이버는 새 실행 파일 디버깅을 시작할 때 <function>main()</function> 에 중단점을 자동으로 설정합니다. 추가 중단점을 설정하고 싶다면 다음 방식으로 처리할 수 있습니다:</para>
      <itemizedlist>
        <listitem>
          <para>중단점을 설정하려는 줄의 여백을 클릭</para>
        </listitem>
        <listitem>
          <para>중단점을 설정하려는 위치의 줄에 커서를 두고 <menuchoice><guimenu>디버깅</guimenu><guimenuitem>커서 위치의 중단점 설정 전환</guimenuitem></menuchoice>을 선택하거나 <keycap>F8</keycap>키를 눌러 중단점 설정</para>
        </listitem>
        <listitem>
          <para><menuchoice><guimenu>디버깅</guimenu><guimenuitem>중단점 설정...</guimenuitem></menuchoice>를 선택하거나 <keycombo><keycap>Ctrl</keycap><keycap>B</keycap></keycombo> 키를 눌러 파일에 있는 특정 함수 이름 또는 특정 위치의 중단점 설정. 이 방식은 다음과 같은 대화상자를 띄웁니다:</para>
          <screenshot>
            <mediaobject><imageobject> <imagedata fileref="figures/set-breakpoint-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>중단점 설정 대화상자</phrase> </textobject></mediaobject>
          </screenshot>
          <para>파일의 각 부분에 중단점을 설정할 수 있습니다. 동일한 이름을 지닌 하나 이상의 함수가 있다면 네마이버에서는 일치하는 모든 함수 목록을 표시하고 어떤 항목을 선택할 지 물어봅니다.</para>
        </listitem>
      </itemizedlist>
      <sect3>
        <title>비활성화한 중단점</title>
        <para>중단점은 활성화하거나 비활성화할 수 있습니다. 디버거에서는 활성화한 중단점에 도달하는 언제든 실행을 멈출 수 있지만 다른 중단점을 비활성화 한다고 해서 상태를 바꿀 수 있진 않습니다. 이 기능을 통해 실제로 중단점을 삭제하지 않아도 임시로 중단점을 제거할 수 있습니다.</para>
        <para>중단점을 비활성화하거나 활성화하려면 <interface>상태 노트북</interface>의 <interface>중단점</interface> 탭에서 활성화하거나 비활성화하려는 중단점 번호 옆의 확인 상자를 누르십시오. 대신, 현재 커서가 있는 줄에서 <keycombo><keycap>Shift</keycap><keycap>F8</keycap></keycombo> 키를 눌러 중단점을 활성화 또는 비활성화 할 수 있습니다.</para>
        <para>다음 그림에서는 소스 편집기에서 중단점을 활성화한 모습과 비활성화한 모습의 차이점을 보여줍니다.</para>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/enabled-breakpoint.png" format="PNG"/> </imageobject> <textobject> <phrase>활성화한 중단점의 모습</phrase> </textobject> <caption><para>활성화한 중단점</para></caption></mediaobject>
        </screenshot>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/disabled-breakpoint.png" format="PNG"/> </imageobject> <textobject> <phrase>비활성화한 중단점의 모습</phrase> </textobject> <caption><para>비활성화한 중단점</para></caption></mediaobject>
        </screenshot>
      </sect3>
      <sect3>
        <title>소스 파일 열기</title>
        <para>가끔 중단점을 설정하려는 함수 이름 또는 줄 번호를 정확히 모를 경우가 있기 때문에 소스 파일을 열어 찾아봐야합니다. 파일 시스템에서 임의의 파일을 열어볼 수는 있지만, 네마이버에서는 실행 파일을 빌드하는데 사용한 소스 파일 목록을 제공할 수 있으며 목록을 통해 선택할 수 있게 합니다. <menuchoice><guimenu>파일</guimenu><guimenuitem>소스 파일 열기...</guimenuitem></menuchoice>를 선택하면 다음 창이 나타납니다:</para>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/open-files-target.png" format="PNG"/> </imageobject> <textobject> <phrase>소스 파일을 여는 대화상자</phrase> </textobject></mediaobject>
        </screenshot>
        <para>파일 시스템에서 임의의 파일을 선택하려면 <guilabel>파일 시스템에서 선택</guilabel> 옵션을 선택하십시오. 실행 파일을 만든 파일 목록에서 선택하려면 <guilabel>실행 대상에서 선택</guilabel>을 선택하십시오.</para>
        <warning>
          <title>동적으로 불러오는 모듈의 소스 파일 판단</title>
          <para>(<function>dlopen()</function>을 활용하는 식으로) 실행 도중에 대상 실행 파일이 모듈을 불러온다면, 네마이버에서는 실제 모듈을 불러오기 전에 이 모듈을 빌드할 때 어떤 파일을 활용할 지 판단할 수 없습니다.</para>
        </warning>
      </sect3>
    </sect2>
    <sect2 id="nemiver-sect-advanced">
      <title>고급 디버깅</title>
      <sect3 id="nemiver-sect-registers">
        <title>레지스터</title>
        <para>레지스터 편집 위젯은 <interface>상태 노트북</interface>의 <interface>레지스터</interface> 탭에 있습니다. 대신 <keycombo><keycap>Alt</keycap><keycap>F5</keycap></keycombo> 키를 눌러 적절한 탭으로 바로 이동할 수 있습니다.</para>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/registers-view.png" format="PNG"/> </imageobject> <textobject> <phrase>레지스터 편집 위젯</phrase> </textobject></mediaobject>
        </screenshot>
        <para>이 위젯에서는 모든 CPU 레지스터의 현재 값을 보여줍니다. <interface>값</interface> 컬럼을 누르고 새 값을 입력하여 레지스터 값을 편집할 수 있습니다. 마지막으로 디버거를 멈춘 후 바뀐 레지스터 값은 빨간색으로 나타납니다.</para>
      </sect3>
      <sect3 id="nemiver-sect-memory">
        <title>메모리</title>
        <para>메모리 위젯에서는 메모리 섹션을 직접 볼 수 있습니다. 메모리 위젯에서는 프로그램을 실행하고 있을 때 어떤 일이 일어나고 있는지 저수준에서 볼 수 있습니다.</para>
        <screenshot>
          <mediaobject><imageobject> <imagedata fileref="figures/memory-view.png" format="PNG"/> </imageobject> <textobject> <phrase>메모리 편집 위젯</phrase> </textobject></mediaobject>
        </screenshot>
        <para>메모리 뷰 위젯에서 메모리 세그먼트를 표시하려면 <interface>주소</interface> 칸에 메모리 주소를 입력하십시오. 디버깅 중인 프로그램에서 사용하는 주소 영역과 일치하는 주소라면 지정 주소에서 시작하는 메모리 값을 <interface>항목 정렬</interface> 드롭 다운 메뉴의 설정에 따라 바이트, 워드(2 바이트), 롱 워드(4 바이트) 형식으로 메모리 보기 화면에 표시합니다. 프로그램을 순차적으로 실행하는대로 메모리 값을 자동으로 업데이트합니다.</para>
        <para>게다가 메모리 값을 볼 때, 메모리 값을 수정하는 메모리 위젯을 활용할 수 있습니다. 바이트 단위 16진수 표기 방식(메모리 위젯의 왼편) 또는 아스키 표기 방식(메모리 위젝의 오른편)으로 편집할 수 있습니다. 바뀐 값은 즉시 반영됩니다.</para>
      </sect3>
    </sect2>
  </sect1>
  <sect1 id="nemiver-sect-sessions">
    <title>세션 저장 및 복구</title>
    <para>네마이버에서는 나중에 상태를 되돌릴 수 있도록 디버깅 세션을 저장할 수 있습니다. 세션 저장 내용에는 어떤 실행 파일을 디버깅할 지, 어떤 환경 변수를 설정할 지, 어떤 명령행 옵션을 실행 파일에 전달할 지, 어떤 파일을 열지, 어떤 중단점을 설정하여 최근 벗어난 지점에 최대한 빠르게 돌아갈 수 있는지에 대한 정보가 들어있습니다.</para>
    <sect2 id="nemiver-sect-saving-sessions">
      <title>세션 저장</title>
      <para>네마이버에서 프로그램을 빠져나갈 때 세션을 자동으로 저장하므로 전혀 걱정하실 필요가 없습니다. 그러나 네마이버를 닫기 전에 세션을 분명하게 저장하고 싶다면 <menuchoice><guimenu>파일</guimenu><guimenuitem>디스크에 세션 저장</guimenuitem></menuchoice>을 선택하여 동작을 처리할 수 있습니다.</para>
    </sect2>
    <sect2 id="nemiver-sect-resuming-sessions">
      <title>저장한 세션 재개</title>
      <sect3>
        <title>워크벤치 활용</title>
        <para><menuchoice><guimenu>파일</guimenu><guimenuitem>저장한 세션 재개...</guimenuitem></menuchoice>를 선택하고 목록에서 세션을 선택하십시오.</para>
        <figure id="nemiver-sessions-dialog">
          <title>세션 대화상자</title>
          <screenshot>
            <mediaobject><imageobject> <imagedata fileref="figures/sessions-dialog.png" format="PNG"/> </imageobject> <textobject> <phrase>저장 세션에 복귀하는 대화상자</phrase> </textobject></mediaobject>
          </screenshot>
        </figure>
      </sect3>
      <sect3>
        <title>명령행에서</title>
        <para>실행하고자 하는 세션의 세션 ID를 알고 있다면 명령행에서 디버깅 세션을 시작할 수 있습니다. 예를 들자면 세션 3번을 실행하고자 한다면 <command>nemiver --session 3</command> 명령으로 처리할 수 있습니다.</para>
      </sect3>
    </sect2>
  </sect1>
  <!-- This should be the last section in the manual -->
  <sect1 id="nemiver-sect-about">
    <title>네마이버 정보</title>
    <para><application>네마이버</application>는 Dodji Seketeli, Jonathon Jongsma, 및 다른 공헌 개발자가 작성했습니다. 네마이버 정보를 더 많이 찾아보려면 <ulink url="http://www.gnome.org/projects/nemiver/" type="http">네마이버 프로젝트 웹사이트</ulink>를 방문하십시오.</para>
    <para>이 프로그램 또는 이 설명서에 대한 문제점을 보고하거나 의견이 있다면 <ulink url="ghelp:user-guide?feedback-bugs" type="help">그놈 사용자 설명서</ulink>의 피드백 섹션을 살펴보십시오.</para>
    <para>이 프로그램은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용허가서 버전 2 또는(선택에 따라)그 이상 버전의 조항에 따라 배포합니다. 라이선스 사본은 이 <ulink url="ghelp:gpl" type="help">링크</ulink> 또는 이 프로그램의 소스코드에 들어있는 COPYING 파일에서 찾아보실 수 있습니다.</para>
  </sect1>
</article>
<!--
vim: ts=2 sw=2 et
-->
