# Manual do Nemiver

## Visión xeral

Nemiver constitúe un esforzo continuado de crear un depurador gráfico que se integre no contorno de escritorio GNOME. Agora mesmo conta cun motor baseado no coñecido Depurador de gdb GNU para depurar programa C / C++.

### Perspectivas

Nemiver está deseñado como un aplicativo gráfico xenérico e como un sistema de complementos que poden ofrecer diversas perspectivas. Nestes momentos o único punto de vista que se fornece é o do depurado, pero nun futuro pode haber novas perspectiva grazas á depuración de memoria con valgrind, ou para ferramentas de creación de perfís como o oprofile.

## Iniciarse

Esta sección explica como iniciar Nemiver e dá unha visión xeral da aplicación.

### Iniciando Nemiver

Podes iniciar o Nemiver das seguintes formas:

Prema no Menú de Aplicativos

- Escolla Programación Depurador Nemiver.

Liña de ordes

- Escriba `nemiver` e prema Intro.

  #### Opcións adicionais da liña de comandos

  Pode atopar unha lista de opción que poden ser introducidas no Nemiver a través da liña de comandos escribindo `nemiver --help-all`.

### A fiestra do Nemiver

Ao iniciar o Nemiver aparecerá unha xanela semellante á seguinte:

#### Xanela do Nemiver

Shows Nemiver main window.

A xanela do Nemiver contén os seguintes elementos:

Barra do menú

- Os menús da barra do menú conteñen todos os comandos que precisa para usar o Nemiver.

Barra de ferramentas

- A barra de ferramentas contén as accións básicas de depuración precisas para executar ou depurar o programa.

Notas da visualización da fonte

- Ao abrir os ficheiros fonte aparecerá nesta área os ficheiros fonte do programa que está a ser depurado.

Notas de estado

- As notas de estado conteñen varias lapelas que amosan a información do programa que está a ser depurado. Nestas inclúense:

  Pila de chamadas

- Amosa o estado actual das chamadas acumuladas do programa en depuración.

Variábeis

- Amosa unha lista de variábeis locais e de argumentos de función, ademais dos seus valores e tipos.

Terminal de destino

- Se o programa que está sendo depurado envía algunha saída áo terminal, esta aparecerá nesta lapela.

Puntos de interrupción

- Esta lapela amosa unha lista de todos os puntos de interrupción definidos. Pode ver o código de fonte dun punto de interrupción facendo dobre click no obxecto da lista ou facendo click co botón dereito e seleccionando ir á fonte do menú. Ademais, os puntos de interrupción poden ser borrados, activados ou desactivados nesta lapela. Para máis información sobre os puntos de interrupción, vexa nemiver-sect-breakpoints.

Rexistros

- Esta lapela amosa todos os rexistros da UCP e os seus valores Para máis información, vexa nemiver-sect-registers.

Memoria

- Esta lapela amosa o estado actual dunha localización de memoria específica. Para máis información, vexa nemiver-sect-memory.

### Escollendo un programa para depurar

Hai moitas maneiras de comezar a depurar un programa. Nemiver permitiralle cargar un ficheiro executábel local, cargar un ficheiro core, acoplalo a un proceso en execución ou conectar a un servidor de depuración remoto.

#### Depurando un programa executábel

##### Usando o aplicativo

Para escoller un programa executábel para depurar, seleccione Ficheiro Executar... e aparecerá o seguinte diálogo:

###### Executar diálogo

Shows dialog for selecting an executable to run

Neste diálogo pode escoller o programa que será depurado, calquera argumento ou opción que será introducido no executábel mediante a liña de comando, o cartafol de traballo no que será executado e calquera variábel do contorno que deba ser estabelecida cando o executábel esta a ser depurado.

##### Usando a liña de comandos

Para iniciar un programa executábel e depuralo desde a liña de comandos especifique soamente o nome do ficheiro. Tamén pode fornecer a ruta completa ou, se xa se atopa na ruta do ficheiro, escribir o nome do executábel. Por exemplo, se na ruta está `/usr/bin` ambas as dúas opcións seguintes serán válidas:

- `nemiver /usr/bin/progname`

- `nemiver progname`

###### Introducindo opcións na liña de comandos

Se desexa introducir as opcións da liña de comandos no programa que está a depurar, debe escribilo entre comiñas, como en `nemiver "prognam --arg1 --arg2"`, para evitar que o Nemiver o inclúa no proceso.

#### Acoplando a un programa en execución

##### Usando o aplicativo

Escolla Ficheiro Acolpar ao programa en execución... no menú para que apareza o seguinte diálogo:

###### Acoplar diálogo

Shows dialog for attaching to a running program

Seleccione un proceso da lista e prema Aceptar para comezar a depuración do programa seleccionado. Pode haber varios procesos na lista de diálogo, así que podes escoller só os que che interesen escribindo na caixa situada baixo a lista.

##### Usando a liña de comandos

Para acoplar a un programa en execución desde a liña de comandos use a opción `--attach`. A opción `--attach` acepta tanto un pid coma un nome de proceso. Daquela, para depurar un proceso en execución como `foo`, que ten un pid de 1121, pode escribir `nemiver --attach foo` ou `nemiver --attach 1121`.

#### Cargando un ficheiro core

##### Usando o aplicativo

Seleccione no menú Ficheiro Cargar ficheiro core...

###### Cargar diálogo do ficheiro core

Shows dialog for loading a core file

##### Usando a liña de comandos

Non foi posíbel cargar os ficheiros core da liña de comandos.

#### Depuración remota

Nemiver permítelle conectar cun servidor de depuración remoto.

##### Usando o aplicativo

Para conectar a un servidor de depuración remoto seleccionando Ficheiro Conectar a un destino remoto...

Remote Debugging Dialog

Seleccione os executábeis para cargar e a localización onde estean localizadas as bibliotecas compartidas, e logo especifique nos detalle como conectar ao servidor remoto.

##### Usando a liña de comandos

O Nemiver non fornece a posibilidade de conectar cun servidor remoto mediante unha liña de comandos

## Usando o Nemiver

Esta sección describe como usar o Nemiver para depurar o teu aplicativo.

### Acción de depuración básicas

As accións de depuración básicas están dispoñíbeis na barra de ferramentas, no menú Depurar e nos atallos do teclado. As accións máis comúns están enumeradas embaixo:

Continuar

- Inicia o programa. O programa executarase até que chegue a un punto de interrupción ou até que remate senón é interrompido de forma manual ao premer Deter. Esta acción pode ser activada desde o teclado premendo F5.

Seguinte

- Executa a seguinte orde e detense ao chegar ao final da seguinte liña do ficheiro. Algúns depuradores chaman a esta acción «Solapamento» Esta acción pode ser activada desde o teclado mediante F6.

Paso

- Executa a seguinte orde, entrando, se é posíbel, na seguinte función. Algúns depuradores chaman a esta acción "Estrada". Esta acción pode ser activada desde o teclado mediante F7

Paso de saída

- Remata a execución da función actual e detense cando volver á función de chamada. Esta acción pode ser activada desde o teclado mediante Shift F7.

Reiniciar

- Recarga o executábel actual e inicia a execución desde o principio. Esta acción pode ser activada desde o teclado mediante Shift F5.

Deter

- Interrompe manualmente a execución do programa. Esta acción só está dispoñíbel cando o depurador esta a executar o ficheiro (e.g. despois de premer Continuar). Esta acción pode ser activada desde o teclado mediante F9.

Por defecto, o Nemiver creará un punto de interrupción en `main()` despois de cargar o executábel, polo que ao chegar a ese punto deterase e agardará por outra orde. Entón, poderás entrar no programa, examinar as variábeis (vexa nemiver-sect-inspecting-variables) ou estabelecer puntos de interrupción adicionais (vexa nemiver-sect-breakpoints).

### Inspeccionar as variábeis

O Nemiver amosa unha lista de todas as variábeis na lapela Variábeis das Notas de estado. Se quixer examinar unha variábel diferente (ou incluso unha expresión arbitraria) pode usar a Inspección de variábeis. Para iniciar o Inspector de variábeis seleccione Depurar Inspeccionar unha variábel. Ao aparecer a inspección de variábeis verá unha xanela semellante á seguinte:

Variable Inspector Dialog

Pode escribir unha variábel ou simplemente unha expresión (como `pFoo->bar`) na caixa de entrada, e se a variábel é válida e ten cabida, Mostraranse os detalles desa expresión.

Por outra banda, se escolle o nome dunha variábel no editor da fonte e inicia a Inspección das variábeis tentarase Mostrar a información sobre a variábel seleccionada.

#### Atallos do teclado

Tamén podes iniciar a Inspección da variábel premendo F12.

O Nemiver tamén Mostrará unha lista de todas as variábeis globais dunha aplicación nun diálogo separado. Para Mostrar o diálogo das Variábeis globais seleccione Depurar Mostrar variábeis globais ou prema Ctrl G.

Global Variables Dialog

A listaxe de todas as variábeis locais para algúns programas (en especial os creados baixo C++) pode levar bastante tempo.

### Estabelecendo os puntos de interrupción

Hai varias maneiras de estabelecer os puntos de interrupción no Nemiver. O Nemiver estabelecerá un punto de interrupción en `main()` cando comece a depurar un executábel novo de forma automática. Se quixer engadir máis puntos de interrupción pode facelo das seguintes maneiras:

- Prema na marxe seguinte á liña onde quere estabelecer o punto de interrupción

- Sitúe o cursor sobre a liña onde quere estabelecer o punto de interrupción e seleccione Depurar Mudar o punto de interrupción ao cursor ou prema F8

- Estabeleza un punto de interrupción nun nome de función ou nunha localización específicos nun ficheiro seleccionando Depurar Estabelecer punto de interrupción... ou premendo Ctrl B. Con isto abrirase un diálogo semellante ao seguinte:

  Set Breakpoint Dialog

  Pode especificar un punto de interrupción nunha localización particular no ficheiro ou nun nome de función. Se houber máis dunha función co mesmo nome, o Nemiver Mostrará unha lista coas coincidencias

#### Disabled Breakpoints

Breakpoints can be either enabled or disabled. The debugger will stop execution whenever it reaches an enabled breakpoint but will not be affected by any breakpoints in the disabled state. This allows you to temporarily remove a breakpoint without actually deleting it.

To disable or enable a breakpoint, click the checkbox next to the breakpoint number you want to enable or disable in the Breakpoints tab of the Status Notebook. Alternately, you can press Shift F8 to enable or disable a breakpoint that is set on the line that the cursor is currently on.

The following figures show the difference between enabled and disabled breakpoints in the source editor.

Illustration of an enabled breakpoint

Enabled Breakpoint

Illustration of a disabled breakpoint

Disabled Breakpoint

#### Opening Source Files

Sometimes you don't know exactly the function name or line number where you want a breakpoint to be set, so you must open a source file to figure it out. You could just open arbitrary files from the filesystem, but Nemiver can also provide a list of source files that were used to build the executable and allow you to select from this list. When you select File Open Source File..., the following window should be displayed:

Shows dialog for opening source files

To select an arbitrary file from the filesystem, choose the Select from Filesystem option. To select from a list of files that produced the executable, choose Select from Target Executable.

##### Determining Source Files for Dynamically Loaded Modules

If the target executable loads modules at runtime (e.g. using `dlopen()`), Nemiver will not be able to determine which files were used to build these modules until they are actually loaded.

### Advanced Debugging

#### Rexistros

The register editing widget is located in the Registers tab of the Status Notebook. Alternately, you can press Alt F5 to jump directly to the correct tab.

The Register Editing Widget

This widget shows the current values of all of the CPU registers. You can edit the register values by clicking in the Value column and entering a new value. If the value for the register changed since the last time the debugger stopped, it will be highlighted in red.

#### Memoria

The memory widget allows you to view a section of memory directly. This enables you to get a lower-level view of what's happening while your program is running.

The Memory Editing Widget

To display a segment of memory in the memory view widget, enter a memory address in the Address field. If the address is valid for the program being debugged, the memory view will display the memory values starting at the specified address. Memory values can be displayed in byte format, word format (2 bytes), or long word format (4 bytes) by choosing an option from the Group By drop-down menu. The memory values will automatically be updated as you step through the program.

In addition to viewing the memory values, you can also use the memory widget to modify memory values. You can edit either the hex byte representation (the left-hand section of the memory widget), or the ASCII representation (the right-hand section of the memory widget). All changes will be applied immediately.

## Session Save and Restore

Nemiver can save your debugging sessions for you so that you can resume them at a later time. This includes saving information such as which executable is being debugged, what environment variables are set, what command-line options are passed to the executable, which files are open, and which breakpoints are set so that you can get back to where you left off last time as quickly as possible.

### Saving Sessions

Nemiver will save your session automatically on exit, so you don't even have to worry about it. However, if you want to explicitly save the session before closing Nemiver, you can do so by selecting File Save Session To Disk.

### Resuming Saved Sessions

#### Usando o aplicativo

Select File Resume Saved Session... and select a session from the list.

##### Session Dialog

Shows dialog for resuming a saved session

#### From the Command Line

If you know the session ID of the session you want to run, you can start that debugging session from the command line. For example, if you want to run session number 3, you can do so with the following command: `nemiver --session 3`.

## About Nemiver

Nemiver was written by Dodji Seketeli and Jonathon Jongsma, with contributions from many others. To find more information about Nemiver, please visit the Nemiver project website.

To report a bug or make a suggestion regarding this application or this manual, see the Feedback section of the GNOME User Guide.

This program is distributed under the terms of the GNU General Public license as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of this license can be found at this link, or in the file COPYING included with the source code of this program.