# Manuale Utente di &kdevelop;

## Contenuto di questo manuale

Questo manuale utente descrive l'uso dell'ambiente di sviluppo integrato (IDE) &kdevelop; &kdevrelease;. Non è un manuale di programmazione e non descrive nel dettaglio il processo di sviluppo, ma fornisce una guida nella gestione dell'IDE.

Si troveranno informazioni sui seguenti argomenti:

- In poche parole — trucchi e suggerimenti — un veloce riferimento ai comandi e alle azioni più usate, e una breve guida per risolvere i problemi comuni quando si lavora con &kdevelop;.

- Sviluppo su &UNIX; — una panoramica storica sullo sviluppo di applicazioni su &UNIX;, sui principali strumenti necessari e sul perché si ha bisogno di un IDE.

- Installare &kdevelop; — viene indicato dove ottenere &kdevelop; e come farlo funzionare.

- Iniziare ad usare &kdevelop; — una veloce introduzione a questo IDE e all'utilizzo dei progetti.

- Caratteristiche di &kdevelop; — prosegue il capitolo precedente descrivendo l'aspetto di &kdevelop; e i suoi componenti.

- Menu e barre degli strumenti — (nell'appendice) fornisce una piccola panoramica dei menu e delle barre degli strumenti disponibili.

- Scorciatoie da tastiera — (nell'appendice) elenca le sequenze di tasti da usare per accedere velocemente a specifiche operazioni.

- Configurare &kdevelop; — mostra come si può adattare l'IDE alle proprie esigenze.

- Usare gli script in &kdevelop; — viene descritto come aggiungere script per automatizzare il funzionamento di &kdevelop;.

- Gestione avanzata dei progetti — illustra come caricare progetti già esistenti, convertire progetti di vecchie versioni di &kdevelop; e importare altri progetti esistenti. Viene inoltre discussa la configurazione delle opzioni del progetto.

- Strumenti di editing — tutto il necessario per scrivere i file sorgente: dall'uso dell'editor e la ricerca del testo localmente o globalmente fino all'integrazione nel progetto di nuovi file e classi.

- Il browser dei file — illustra vari strumenti per esaminare la struttura del proprio progetto e indica come accedere ai file con cui si vuole lavorare.

- Il browser delle classi — descrive uno dei più potenti strumenti di &kdevelop; che permette di navigare attraverso le dipendenze delle classi e creare classi e metodi.

- Documentazione — mostra come accedere alla ricca documentazione incorporata di &kdevelop;, indica come creare la documentazione del proprio progetto, sia la concisa e potente documentazione delle API che fornisce una panoramica di tutti i propri file sorgente sia la documentazione basata su docbook.

- Compilazione e gestione dei progetti — si occupa della creazione e della gestione dei progetti, descrivendo sia autoconf e automake che l'impostazione di Makefile personalizzati; insegna come usare il compilatore o le opzioni di make per adattare l'applicazione alle proprie esigenze.

- Gestione avanzata della compilazione — illustra come ottenere compilazioni multiple, come compilare per diverse piattaforme e come costruire un sistema embedded usando le librerie Qt/embedded.

- L'interfaccia del debugger — descrive come usare l'interfaccia integrata del debugger gdb in modo da scovare i bug senza dover uscire da &kdevelop;.

- Usare CVS — descrive la manutenzione del proprio progetto con il sistema CVS, necessario se molti sviluppatori lavorano allo stesso progetto.

- Programmi Esterni — mostra come accedere a programmi esterni e strumenti attraverso &kdevelop; in modo da espanderne le capacità.

- Plugin — fornisce una panoramica sui componenti che costituiscono &kdevelop; e illustra come possono essere configurati in modo che siano caricati solo quelli necessari.

- Alcuni argomenti comuni sono stati inseriti nell'appendice, che comprende:

  - Una panoramica dei menu e delle barre degli strumenti

  - L'elenco delle scorciatoie da tastiera — sequenze di tasti che si possono usare per lavorare senza dover ricorrere al mouse.

  - La descrizione dei file di configurazione — usati da &kdevelop; per salvare la propria configurazione interna. Sono utili se succede un inconveniente durante la fase di setup.

  - La descrizione dei Plugin — che possono essere usati per adattare &kdevelop; alle proprie esigenze.

## In poche parole — trucchi e suggerimenti

Le informazioni di questo capitolo sono intese come un veloce riferimento per iniziare e sono utili se si dimenticano (momentaneamente) alcuni concetti di base. Sono illustrati alcuni brevi suggerimenti per risolvere alcuni problemi che si incontrano frequentemente quando si lavora con &kdevelop;.

Se si desiderano ulteriori informazioni su un argomento, seguire il relativo collegamento.

Sono disponibili informazioni sui seguenti argomenti:

- Aspetto
- Progetti
- Compilazione
- Gestore Automake
- Problemi di compilazione/Make
- Altri argomenti

## Aspetto

- ## Impostare linguette degli strumenti più piccole nella modalità IDEAl

  Per default &kdevelop; visualizza delle linguette con il testo attorno all'area di lavoro. Si può risparmiare spazio cambiando questo aspetto nella finestra di dialogo della configurazione di &kdevelop; (Impostazioni Configura KDevelop... Interfaccia Utente).

  Se si ha una versione di &kdevelop; più vecchia potrebbe non essere disponibile questa finestra di configurazione. Per cambiare la visualizzazione delle linguette, inserire la voce `MDIStyle` nel tag `[UI]` nel file di configurazione `$KDEHOME/share/config/kdeveloprc` in questo modo:

  - `MDIStyle=0`: solo icone
  - `MDIStyle=1`: solo testo (default)
  - `MDIStyle=3`: icone e testo

- ## Strani colori dei caratteri e/o stili di visualizzazione

  Se si notano lettere colorate in modo casuale dappertutto (cioè su pulsanti, barre degli strumenti, ecc.) e la finestra di &kdevelop; sembra usare uno stile di visualizzazione errato, potrebbe essere di aiuto questa operazione:

  - Nel proprio file di configurazione `$KDEHOME/share/config/kdeveloprc` trovare la linea che contiene `Style=Checked` e rimuoverla. Poi riavviare &kdevelop;.

  (Questo inconveniente può accadere dopo aver fatto clic su un file .ui in una finestra che visualizza i file. &kdevelop; eseguirà il programma KUIViewer per mostrare l'interfaccia grafica prodotta da quel file).

- ## Modalità schermo intero

  Selezionare Visualizza Modalità schermo intero dai menu oppure premere Ctrl Shift F .

- ## Nascondere/mostrare la barra dei menu

  Per nascondere la barra dei menu selezionare Impostazioni Mostra la barra dei menu dal menu o premere Ctrl M . Per visualizzarla nuovamente premere Ctrl M .

## Progetti

- ## Creare un nuovo progetto

  Avviare la procedura guidata per le applicazioni attraverso Progetto Nuovo progetto....

- ## Creare un progetto personalizzato

  Non esiste un metodo per creare direttamente un progetto personalizzato (cioè un progetto che usa dei propri makefile). Usare Progetto Importa progetto esistente. Ricordarsi di impostare il Tipo di progetto opportuno con l'etichetta (Custom Makefiles).

- ## Impostare inizialmente le opzioni del progetto

  Quando si avvia un nuovo progetto non dimenticarsi di impostare le opzioni desiderate attraverso Progetto Opzioni progetto....

## Compilazione

- ## Dettagli mancanti nei messaggi di compilazione

  Se durante la compilazione si nota che nella finestra Messaggi mancano alcune informazioni, ciò potrebbe essere dovuto ad un livello dei dettagli troppo basso. Fare clic con il tasto destro nella finestra e selezionare un altro livello nel menu contestuale.

## Gestore Automake

- ## Creare nuovi file in un progetto

  Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il tasto destro nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare Crea nuovo file....

- ## Aggiungere file esistenti ad un progetto

  Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi fare clic con il tasto destro nella metà inferiore sul nome del gruppo nel quale si vuole aggiungere il file e selezionare Aggiungi file esistenti....

- ## Rimuovere un file da un progetto

  Selezionare il sottoprogetto nella metà superiore del Gestore Automake, poi nella metà inferiore aprire la lista dove si vuole rimuovere il file, fare clic con il tasto destro sul file nella lista e selezionare Rimuovi.

## Problemi di compilazione/Make

- ## Il progetto non viene compilato dopo aver essere passati dal target di default ad un'altro target o viceversa.

  Esiste un problema con il meccanismo di &automake;/&autoconf;. Se Progetto Configurazione compilazione fornisce tre opzioni chiamate default, optimized, e debug selezionare default o debug.

  - Quando il progetto è stato compilato con la modalità default, non verrà più compilato nelle modalità debug o optimized.

  - Quando il progetto è stato compilato con la modalità debug o optimized non verrà più compilato con la modalità default.

- ## Errore Wrong `autoconf` version ecc.

  Ci sono diversi errori dovuti a versioni troppo vecchie di autoconf ecc. che impediscono a `configure` di funzionare correttamente. Avviare `autoreconf` nell'albero di directory dove risiedono i relativi file `configure.in`. Questo comando tenterà di aggiornare le informazioni nei file del &GNU; Build System. Vedere `man autoreconf` per ulteriori informazioni.

## Altri argomenti

- ## File di configurazione usati da &kdevelop;

  Normalmente non si ci deve preoccupare di questi file, che si rendono utili solo se succedono inconvenienti durante la fase di setup.

&unixdev; &kdevelop-install; &getting-started; &kdevelop-survey; &setup; &kdevelop-scripting; &applicationwizard; &project-advanced;

## Strumenti di editing

### Frammenti di codice

### Caratteristiche (panoramica preliminare)

- SnippetPart aggiunge un vista che viene agganciata a destra

- L'aggiunta, la modifica e la rimozione di frammenti di codice può essere fatta attraverso un menu a comparsa

- Facendo doppio clic su una porzione di codice la inserirà nella vista attiva nella posizione attuale del cursore

- Gli aiuti mostrano i contenuti di un frammento di codice

- I frammenti di codice sono memorizzati nella cartella home, quindi ogni utente può avere i propri.

- I frammenti di codice possono contenere variabili sotto forma di $NOMEVARIABILE$. Quando vengono usati sarà chiesto all'utente di fornire i valori sostitutivi per le variabili

### Tasti Speciali

Di seguito verranno elencate le scorciatoie dell'editor di default. Possono essere configurate a piacimento.

Sinistra | Si muove di un carattere a sinistra
Destra | Si muove di un carattere a destra
Ctrl Sinistra | Si muove di una parola a sinistra
Ctrl Destra | Si muove di una parola a destra
Su | Si muove in alto di una linea
Giù | Si muove in basso di una linea
PgUp | Si muove in alto di una pagina
PgDn | Si muove in basso di una pagina
Ctrl PgUp | Si muove all'inizio del file
Ctrl PgDn | Si muove alla fine del file
Home | Si muove all'inizio della linea
Fine | Si muove alla fine della linea

Per tutti le combinazioni sopra elencate, può essere premuto in aggiunta il tasto Shift per selezionare dalla posizione attuale a quella seguente.

Backspace | Cancella il carattere a sinistra
Canc | Cancella il carattere sotto al cursore
Ctrl C | Copia il testo selezionato negli appunti
Ctrl V | Incolla il testo selezionato negli appunti
Ctrl X | Cancella il testo selezionato e lo mette negli appunti
Ctrl Z | Annulla
Shift Ctrl Z | Ripete

### Reporter di problema

(... da scrivere ...)

### Cercare e usare grep

#### Cercare il testo

Ctrl F - Trova Ctrl R - Sostituisci

#### ISearch

La ricerca tradizionale con il comando Modifica Trova richiede di specificare l'intero termine da cercare prima di avviare la ricerca. Spesso è molto più veloce cercare in modo incrementale. Se si fa clic nel campo chiamato ISearch nella barra degli strumenti, la ricerca verrà effettuata mentre si digita. Spesso il termine desiderato viene trovato dopo aver scritto 3 o 4 lettere.

#### Grep

Entrambi i meccanismi di ricerca descritti prima sono limitati all'interno di un file sorgente. Attraverso la voce Trova nei file... nel menu Modifica è disponibile uno strumento aggiuntivo che permette di cercare attraverso un insieme (anche grande) di file. Fondamentalmente è un frontend per il programma &grep;(1).

Nella finestra di dialogo si può specificare in quali file effettuare la ricerca. In una casella a scelta multipla sono disponibili parecchi caratteri jolly. In questo modo si può facilmente restringere il meccanismo di ricerca ai file header. Inoltre, si può specificare la directory da dove far partire la ricerca. Se si seleziona la casella Ricorsivo, la ricerca proseguirà in tutte le sottodirectory della gerarchia sottostante alla directory specificata.

Generalmente il termine da cercare è un'espressione regolare che segue la sintassi POSIX. Per esempio, si può usare il termine `"\<K.*"` per trovare tutte le parole che iniziano con la lettera K. I seguenti caratteri sono interpretati in maniera speciale:

`.` | Corrisponde ad ogni carattere
`^` | Corrisponde all'inizio di una linea
`$` | Corrisponde alla fine di una linea
`\<` | Corrisponde all'inizio di una parola
`\>` | Corrisponde alla fine di una parola
`?` | L'elemento precedente è presente meno di una volta
`*` | L'elemento precedente è presente zero o più volte
`+` | L'elemento precedente è presente una o più volte
`{n}` | L'elemento precedente è presente esattamente n volte
`{n,}` | L'elemento precedente è presente n o più volte
`{,n}` | L'elemento precedente è presente meno di n volte
`{n,m}` | L'elemento precedente è presente almeno `n` volte ma meno di `m` volte

I riferimenti alle espressioni tra parentesi sono disponibili tramite la notazione `\n`.

In aggiunta per i programmatori C++ ci sono alcuni modelli di ricerca tipici. Questi permettono ad esempio di cercare tutte le chiamate alle funzioni membro di un certo oggetto.

Quando si avvia una ricerca facendo clic sul pulsante Trova, essa verrà effettuata da un processo asincrono esterno. Tutti gli elementi trovati appariranno nella vista chiamata Grep. Si può saltare direttamente all'elemento trovato facendo clic su di esso. Notare che grep scansiona i file come sono memorizzati nel file system. Se si hanno versioni modificate di questi file nel proprio editor si potrebbero ricevere errori nel numero di linea o alcuni elementi potrebbero non essere validi — si possono evitare questi problemi salvando anticipatamente tutti i file.

### Completamento del codice

(... da scrivere ...)

### Creare nuovi File e Classi

(... da scrivere ...)

#### Modificare i modelli

(... da scrivere ...)

## Il browser dei file

&kdevelop; può visualizzare diversi tipi di liste ed alberi per la selezione dei file nella parte sinistra della finestra principale:

- ## Albero dei file

  Questo mostra una vista ad albero della gerarchia di file al di sotto della directory del progetto. Facendo clic su un file verrà caricato nell'editor. Per i file che non contengono testo KDevelop avvierà un'applicazione che può gestire il tipo MIME corrispondente.

  L'albero dei file viene aggiornato regolarmente ogni volta che cambia qualcosa nel file system. Per esempio, se si creano nuovi file o directory (anche fuori da &kdevelop;), il cambiamento si riflette immediatamente nella lista dei file. Su Linux, questa funzione utilizza la libreria FAM. Su altri sistemi operativi o su NFS le directory visualizzate sono controllate periodicamente a brevi intervalli.

  L'albero dei file nasconde i file che normalmente non sono interessanti, come i file oggetto. In Opzioni Progetto nel menu Gruppi di file si possono configurare (come elenco di caratteri jolly separati da virgola) quali pattern devono essere usati per filtrare i file irrilevanti.

  Inoltre si può decidere di limitare l'albero dei file per visualizzare solo i file che appartengono al progetto corrente. Questa modalità può essere cambiata facendo clic con il tasto destro del mouse sull'elemento radice dell'albero.

  ### Uno screenshot dell'albero dei file

- ## Gruppi di file

  Questo visualizza i file che appartengono al progetto, raggruppati per estensione. Come nell'albero di file, si può modificare un file facendo clic con il tasto sinistro del mouse.

  I gruppi mostrati in questa visualizzazione possono essere configurati con Gruppi di file nella finestra di dialogo Opzioni progetto.... Per adattare la visualizzazione alle proprie esigenze, è utile capire come i file vengono distribuiti nei gruppi. Per ogni file &kdevelop; attraversa tutti i gruppi dall'alto al basso. Per ogni gruppo viene controllato se il file corrisponde ad uno schema. Se viene trovata una corrispondenza il file viene visualizzato in quel gruppo e viene interrotta l'iterazione. Questo spiega perché gli schemi più generali dovrebbero essere messi al di sotto di quelli più specifici: per esempio l'ultimo schema dovrebbe essere un asterisco per il gruppo Altro.

## Il browser delle classi

Quando si lavora ad un progetto con un linguaggio orientato agli oggetti, l'attenzione non è concentrata sui file sorgente e i loro nomi, ma sulle classi e le loro relazioni. Per aiutare a navigare lo spazio delle classi e dei simboli definiti, &kdevelop; include vari browser delle classi che visualizzano la struttura delle classi in varie modalità.

### Vista delle classi

Questa vista è mostrata nella parte sinistra della finestra principale e contiene un elenco lineare di tutte le classi, variabili e funzioni del progetto. È organizzata come una vista ad albero. Se si apre il nodo di una classe facendo clic viene visualizzata una lista di tutti i metodi e gli attributi di quella classe.

#### Uno screenshot della vista delle classi

La vista delle classi funziona in due modalità differenti. Per default tutti i simboli sono raggruppati in classi, strutture, funzioni, variabili e namespace. Nel menu contestuale si può scegliere List by Namespaces. In questa modalità viene visualizzata la gerarchia dei namespace, con i simboli raggruppati nel namespace dove sono definiti. Può essere utile nei progetti che fanno grande uso di namespace (innestati), mentre è meno utile in progetti che non li usano.

Si può anche cambiare il modo con cui vengono visualizzati i nomi delle classi. Normalmente sono mostrati senza il namespace in cui sono definiti. Questo implica che non si possono distinguere immediatamente classi che hanno lo stesso nome definite in namespace diversi. Se si rimane con il mouse per un po' sopra ad un elemento viene mostrato un aiuto che mostra l'intero percorso del nome. Si può decidere di visualizzare sempre il nome completo scegliendo Full Identifier scopes dal menu contestuale.

Facendo clic su una classe o su un metodo viene mostrata la definizione. Si può anche saltare alla dichiarazione di un metodo scegliendo Vai alla dichiarazione dal menu contestuale. In questo menu sono presenti anche le voci Aggiungi metodo.. e Aggiungi attributo..., che aprono delle finestre di dialogo dove si possono generare nuove dichiarazioni di metodi e variabili senza implementazione.

### Strumenti per le classi

La finestra di dialogo class tool è attivata facendo clic una classe con il tasto destro nella visuale delle classi e scegliendo Class tool....

### Gerarchia delle classi

(... da scrivere ...)

## Documentazione

Sfortunatamente la documentazione fa parte delle questioni più trascurate; tuttavia una volta impostata e mantenuta, la documentazione interna ed esterna fornisce un'aiuto molto importante.

La documentazione ha diversi aspetti. C'è

- documentazione interna al progetto, che consiste principalmente in

  - commenti nei file header/sorgente

  - documentazione API interna del proprio progetto generata da strumenti speciali come ad es. &doxygen;

- documentazione esterna del progetto che comprende

  - documentazione API esterna ad es. di librerie di sistema (KDE, Qt, ecc.)

  - altra documentazione (manuali di programmazione, informazioni generali di sistema, articoli HowTo e simili)

Tutta questa documentazione dovrebbe essere manutenibile e a portata di mano ogni volta che serve. &kdevelop; ha la soluzione proprio per questo.

### Il browser della documentazione

#### Uno screenshot dell'albero della documentazione

&project-management;

## Gestione avanzata della compilazione

### Configurazioni di compilazione multiple

(... da scrivere ...)

### Cross compilazione

Quando si hanno a disposizione dei cross compilatori si possono compilare i programmi per processori e sistemi operativi diversi da quello in cui viene eseguito il compilatore e &kdevelop;. Il &GNU; compiler collection GCC può essere configurato e compilato come un cross compilatore. Consultare le pagine info di GCC per maggiori informazioni. Alcune distribuzioni Linux forniscono anche pacchetti binari.

Un pacchetto basato su automake può essere facilmente cross compilato passando l'opzione `--host` allo script configure e impostando le variabili d'ambiente `CC` e `CXX` sui relativi file binari dei cross compilatori. Spesso si desidera passare dalla versione cross compilata a quella compilata per il proprio sistema e viceversa. Per questo motivo è conveniente usare la capacità di &kdevelop; di creare configurazioni multiple di compilazione, come spiegato nel capitolo buildconfigurations. Una volta creata una nuova configurazione per la cross compilazione nella finestra di dialogo Progetto Opzioni progetto..., aggiungere l'opzione

    --host=piattaforma

alle opzioni di configure. Il nome `piattaforma` è una ennupla nella forma

    cpu-vendor-os

o

    cpu-vendor-kernel-os

Si può usare la forma breve per molte combinazioni, per esempio i386-linux o arm-elf.

### Qt/Embedded

&qte; è una versione delle librerie &Qt; che nei sistemi Linux non usa il sistema X window, ma disegna direttamente sul framebuffer. Perciò è interessante per sistemi embedded che hanno strette restrizioni sull'uso della memoria di sistema. Le API sono pienamente compatibili con quelle della versione X11.

Sviluppare applicazioni per &qte; con &kdevelop; non è molto diverso dallo sviluppo di un programma per la versione X11 di &Qt;. Di fatto, si può usare lo stesso codice per entrambe le versioni. Se si usa il gestore di progetti autoproject si può passare alla versione embedded passando allo script configure l'argomento `--enable-embedded`. Si può impostare questo in Opzioni di configurazione nella finestra di dialogo Progetto Opzioni progetto.... Con l'opzione `--with-qt-dir=DIR` si può impostare la directory in cui è installata la libreria &qte;.

Dopo aver configurato e compilato la propria applicazione con queste opzioni, verrà eseguito il link con la libreria `libqpe.so`. Questa versione dell'applicazione normalmente non funzionerà quando si usa X11: per testarla avviarla sotto il controllo dell'applicazione qvfb (Qt Virtual Frame Buffer). Questo viene fatto avviando qvfb ed eseguendo l'applicazione con

    app -qws -display QVFb:0

Naturalmente si vorrà usare una versione funzionante della propria applicazione sul processore di destinazione. Probabilmente sarà utile creare configurazioni multiple di compilazione, come spiegato prima, in modo da passare velocemente tra la versione eseguita nel proprio sistema di sviluppo e la versione eseguita sul sistema di destinazione.

Normalmente le applicazioni per &qte; vengono eseguite come applicazioni singole nei dispositivi per i quali sono state progettate. Trolltech supporta anche Qtopia, che è una collezione di applicazioni per PIM, come browser e altri che funzionano assieme in maniera consistente. Ad esempio è un ambiente standard dello Sharp Zaurus. Si possono scrivere applicazioni che si integrano in questo ambiente usando l'SDK di Qtopia, rendendo la classe della propria applicazione una sottoclasse di `QPEApplication` ed effettuando il link alle librerie `libqpe.so`. Se si sviluppa l'applicazione con il gestore di progetti autoproject si deve aggiungere `--enable-qtopia` agli argomenti di configure.

## L'interfaccia del debugger

Per i linguaggi C e C++, &kdevelop; contiene un debugger interno che è direttamente integrato nell'editor. Tecnicamente è implementato come un frontend che usa gdb (portable &GNU; debugger) attraverso una pipe. Il debugger può essere avviato in diversi modi:

- Con Debug Avvia,viene caricato dentro il debugger il programma principale del proprio progetto.

- Usando Debug Esamina il file core viene caricato in memoria un file core che è stato generato dal kernel del sistema operativo quando il programma è andato in crash (la generazione di file core potrebbe essere disattivata sul proprio sistema, vedere ulimit(1)). Questo è utile per un'analisi post-mortem del programma.

- Con Debug Allega al processo si usa il debugger su un programma già in esecuzione. Verrà mostrata una lista di processi da dove si può selezionare quello che dovrà essere supervisionato dal debugger.

- Notare che questo debug è possibile se il proprio progetto è stato compilato con l'attivazione delle informazioni di debug. Possono essere attivate nella finestra di dialogo Opzioni compilatore. Quando questa opzione è attivata il compilatore genera dati aggiuntivi che permettono al debugger di associare i nomi dei file e numeri di linea con gli indirizzi nel file eseguibile.

Il frontend del debugger fornisce diverse viste nel processo:

- ## Variabili

  Questa finestra elenca i valori di tutte le variabili locali del punto corrente dell'esecuzione del programma. Esso include le variabili dell'intero stack delle chiamate, cioè la funzione dove è stato interrotto il processo, la funzione che ha chiamato quella funzione e così via fino a `main()`.

  Un altro ramo di variabili contiene le variabili di osservazione. Si possono configurare quali variabili mostrare qui. Possono essere osservate sia le variabili locali che globali. Si possono aggiungere variabili facendo clic sul pulsante Aggiungi o premendo RETURN mentre è selezionata la voce Espressione da controllare. Possono essere rimosse nuovamente attraverso il menu contestuale.

- ## Breakpoint

  (... da scrivere ...)

- ## Stack del frame

  (... da scrivere ...)

- ## Disassemblare

  (... da scrivere ...)

### Impostare i breakpoint

(... da scrivere ...)

### Opzioni

### Visualizzare nomi mangled (storpiati)

Nel C++, i nomi delle funzioni negli eseguibili sono detti mangled (storpiati), cioè il nome della funzione include le informazioni sul tipo degli argomenti. Questo è necessario per il supporto al sovraccaricamento delle funzioni. L'algoritmo di mangling non è standardizzato e differisce persino tra versioni diverse del compilatore C++ &GNU;

Normalmente nella finestra di disassemblaggio vengono visualizzati nomi non mangled, quindi le firme delle funzioni sono simili a come appaiono nel codice sorgente, quindi facilmente leggibili. In alternativa si può decidere di vedere i nomi mangled.

### Tentare di impostare i breakpoint al caricamento delle librerie

Il backend del debugger gdb non permette di inserire breakpoint all'interno di codice non caricato. Questo potrebbe essere sconveniente in una applicazione altamente modulare, dove spesso il codice viene caricato su richiesta come un plugin (usando la funzione di libc `dlopen(3)`), quindi &kdevelop; ha esteso il proprio supporto per i breakpoint nelle librerie condivise. Se si imposta questa opzione si potranno impostare i breakpoint in librerie che non sono state caricate. Quando gdb notificherà che una libreria è stata caricata, &kdevelop; tenterà di impostare i breakpoint sospesi.

### Abilitare la barra degli strumenti fluttuante

(... da scrivere ...)

## Usare CVS

### Fondamenti di &CVS;

&CVS; è il sistema di controllo delle modifiche che viene usato in molti progetti open source — incluso &kde;. Esso conserva tutti i sorgenti in una locazione centrale, chiamata deposito (repository). Dal deposito, gli sviluppatori possono controllare la versione corrente del progetto o gli snapshot di un qualunque istante di tempo. A differenza di altri sistemi di controllo delle modifiche, non è necessario fare il lock dei file su cui si vuole lavorare. In questo modo lo sviluppo può essere altamente parallelizzato.

Quando uno sviluppatore ha finito un compito, effettua il commit del suo codice (accompagnato da un messaggio di log). &CVS; si occupa della fusione dei cambiamenti fatti dai diversi sviluppatori. Ovviamente può succedere che più sviluppatori lavorino sullo stesso pezzo di codice; potrebbe risultare una serie di cambiamenti in conflitto tra loro (in pratica questo accade raramente, ed è spesso un segno di una carenza di comunicazione). In questo caso &CVS; rifiuta le modifiche; si potrà fare il commit di un file solo dopo che saranno risolti tutti i conflitti.

Finora si sono descritte le caratteristiche di base di &CVS; che compaiono normalmente, ma &CVS; ne fornisce molte di più: si possono mantenere diversi rami di un progetto (ad es. &kde; 1.1.2 e &kde; 2 erano rami dell'albero di sviluppo di &kde;), unire i cambiamenti di un ramo con un altro, chiedere le differenze tra le revisioni, la storia delle revisioni di file ecc.

&CVS; è implementato come un sistema client-server. Come utente, tutta la comunicazione con il deposito viene effettuata attraverso il programma a linea di comando &cvs;. É disponibile un livello più alto di interfaccia utente attraverso frontend come Cervisia () o TkCVS (). In &kdevelop; può essere usata direttamente solo una piccola parte delle funzionalità di &cvs; che sono importanti per il lavoro quotidiano.

Viene supposta una conoscenza di base dell'uso di &CVS;. In particolare, si dovrebbe sapere come controllare un dato progetto nel deposito. Viene raccomandato il libro Open Source Development With CVS di Karl Fogel che è distribuito liberamente (tranne i capitoli non-tecnici). Vedere .

### Comandi &CVS; in &kdevelop;

Nella vista dei file, sono disponibili le seguenti voci del menu contestuale:

- ### Aggiungi al deposito

  Predispone i file contrassegnati per l'aggiunta al deposito. Il file viene trasferito al deposito quando si effettua il commit del file (o della directory che lo contiene) la volta successiva.

- ### Rimuovi dal deposito

  Predispone un file per la rimozione dal deposito. Questo cancella il file anche nel file system locale, quindi usare questa funzione con prudenza!

- ### Aggiorna

  Esegue il comando `cvs update` per fondere tutti i cambiamenti degli altri utenti nella directory di lavoro. Quando si usa questa voce di menu su una directory normalmente viene fatto l'aggiornamento ricorsivamente, tranne il caso in cui questa opzione sia stata disabilitata nel file di configurazione `.cvsrc`.

- ### Commit

  Esegue il comando `cvs commit` per inviare tutte le modifiche locali al deposito. Notare che si dovrebbe fare l'aggiornamento prima di dare questo comando, altrimenti nel caso che un altro utente abbia inviato nel frattempo le proprie modifiche &CVS; potrebbe dare un messaggio di errore.

Tutti questi comandi sono eseguiti da &kdevelop; come sottoprocessi senza nessuna opzione a linea di comando o variabile d'ambiente. Questo potrebbe costituire un problema se ci si connette con il server &CVS; attraverso una connessione &ssh; che richiede l'inserimento di una password ogni volta che viene effettuato l'invio o l'aggiornamento. Ad esempio questo è necessario quando il proprio progetto è ospitato su `sourceforge.net`. Nella CVS/SSH FAQ che si può trovare nella documentazione di SourceForge sono descritte le soluzioni a questo problema.

### Dietro le quinte

#### Cosa registra &CVS; nella directory di lavoro

(... da scrivere ...)

## Programmi esterni

Sebbene &kdevelop; sia un cosiddetto ambiente di sviluppo integrato, non potrà mai contenere tutte le funzioni che si vorrebbero usare, e le capacità del suo editor non saranno mai sufficienti per eseguire tutti i compiti di elaborazione di testo che vengono spesso compiuti. Come ogni autentico programma &UNIX;, &kdevelop; contiene diverse possibilità di eseguire programmi esterni, plugin esterni necessari per lavorare con i file o filtri esterni per elaborare i contenuti dell'editor.

Una delle caratteristiche più generali e semplici è il menu degli strumenti, che si può configurare liberamente. Questo può essere fatto nella finestra di dialogo Impostazioni Configura KDevelop....in Strumenti esterni.

Gli altri strumenti saranno discussi nel capitolo plugin-tools.

## Riconoscimenti

### Contributi

- La stesura iniziale di questo manuale è stato scritto da Bernd Gehrmann bernd@kdevelop.org e Caleb Tennis caleb@aei-tech.com.

- I capitoli Sommario sul gestore Automake e Operazioni del gestore Automake sono stati scritti da Ian Wadham ianw@netspace.net.au.

&app-menu;

## Scorciatoie

(... da scrivere ...)

&app-files;

## Plugin

&kdevelop; contiene un grande numero di piccoli strumenti che aiutano ad eseguire alcuni compiti. La maggior parte di essi è realizzata come plugin. Questo significa che se uno di essi non piace può essere semplicemente disattivato nella finestra di dialogo Opzioni progetto... in Plugins (per i plugin generali) o in Impostazioni Configura KDevelop....I plugin che sono stati disattivati non disturbano i menu e non sono caricati in memoria.

- ## Il plugin `abbrev`

  Questo plugin espande le abbreviazioni in frammenti di codice molto usati. Si attiva premendo Ctrl Spazio. Per esempio, se si inserisce nell'editor `"ife"` in un file C++ e si preme Ctrl Spazio, si ottiene un modello di codice `if-else` e si risparmia qualche battitura di tasti. L'insieme delle abbreviazioni supportate dipende dal linguaggio di programmazione del file che viene modificato. Per esempio, per PHP si sarà ovviamente interessati ad altri modelli di codice rispetto a quelli di &Java;.

  L'insieme dei modelli di codice è configurabile. Si possono vedere quelli disponibili in Impostazioni Configura KDevelop... in Abbreviazioni

- ## Il plugin `filter`

  Questo plugin fornisce due funzioni. Se si seleziona Strumenti Esegui comando..., si può inserire un comando di shell. L'output del comando è inserito nel buffer dell'editor quando si preme il pulsante Avvia.

  La funzione relativa è disponibile in Strumenti Selezione filtro tramite comando.... Per usarla, si deve selezionare un'area di testo nell'editor. Se si inserisce un comando e si preme il pulsante Avvia esso verrà avviato e verrà usata la selezione come input. Lo standard output del comando viene quindi inserito nell'editor.

- ## Il plugin &doxygen;

  Questo plugin aiuta ad usare lo strumento di documentazione API &doxygen; (). Si può selezionare Project Run Doxygen per generare la documentazione API per il progetto corrente, in base alla configurazione del file `Doxyfile` della directory del progetto.

  Inoltre si può configurare &doxygen; nella finestra di dialogo Progetto Opzioni progetto.... Questa finestra di dialogo è molto simile alla procedura guidata &doxygen;.

- ## Il plugin &ctags;

  Sebbene il browser delle classi fornisca una vasta scelta di simboli e di classi del progetto, si potrebbe voler usare lo strumento ctags. In particolare esso supporta molti più linguaggi del browser delle classi.

  Si attiva questo plugin in Strumenti CTags.... Al primo avvioverrà chiesto di generare un database di ricerca. Quando si accetta verrà avviato il programma &ctags; che creerà un file chiamato `tags` nella directory del progetto. Questo è un file di testo contenente tutti i simboli del file sorgente.

  Ci sono due modi per fare ricerche nel database di simboli: quando è selezionata la casella Corrisp. espress. regolare il testo inserito sarà interpretato come espressione regolare (tipo POSIX) e confrontato con i simboli esistenti. Per esempio con il testo `.*Widget` verranno cercati tutti i simboli che finiscono con `Widget`. Se la casella non è selezionata la ricerca sarà fatta in modo letterale.

  Quando viene fatta una ricerca si riceverà una lista di simboli corrispondenti accompagnati dal numero di linea del punto dove sono definiti. Facendo clic sulla lista si passerà al punto relativo.

  Per alcuni linguaggi &ctags; distinguerà diversi tipi di simboli. Per esempio Python ha classi e funzioni. Si possono cercare selettivamente solo le classi selezionando il tipo relativo nella finestra di dialogo.

  Normalmente il database dei simboli non viene aggiornato quando si modificano i file sorgente. Di conseguenza dopo un po' i numeri di linea non saranno più corretti e mancheranno le nuove classi e funzioni. Perciò si dovrebbe aggiornare il file `tags` ad intervalli regolari premendo il pulsante Rigenerare.

- ## Il plugin `astyle`

  (... da scrivere ...)

- ## Il plugin `regexptest`

  La progettazione con le espressioni regolari può diventare un lavoro pesante. Spesso al primo tentativo l'espressione corrisponde a troppe stringhe. In particolare, quando si lavora con un linguaggio compilato, i tempi di debug di una espressione regolare possono essere scomodi. Il plugin regexptest permette di esplorare direttamente i cambiamenti in una espressione regolare. Viene attivato con Strumenti Debug dell'espressione regolare.

  Nelle caselle si può scegliere il tipo di motore di espressioni regolari da usare. Attualmente sono supportati il tipo definito dallo standard POSIX, usato dal programma &grep;, e la sintassi POSIX estesa usata dal programma &egrep;.

  Quando si inserisce un'espressione si riceverà un feedback immediato su ogni errore di sintassi. Inserendo un testo in Test stringa,si può vedere se l'espressione corrisponde alla stringa. In particolare, se l'espressione regolare include gruppi come `([a-z])`,viene visualizzato il contenuto del sottogruppo corrispondente in un elenco.

- ## Il plugin `konsole`

  (... da scrivere ...)

### Panoramica

&kdevelop; fornisce moduli estensibili o componenti, da caricare su richiesta al runtime. Questo permette agli sviluppatori di attivare solo le funzioni necessarie o desiderate per lo sviluppo.

Alcuni componenti sono considerati globali — vale a dire che influenzano le operazioni di &kdevelop;. Per esempio, uimode permette ad uno sviluppatore di selezionare quale interfaccia grafica usare.

Altri componenti sono specifici del progetto, e sono utilizzati solo quando un progetto di quel tipo viene caricato. Ad esempio il gestore automake necessita di essere attivo quando viene caricato un progetto basato su automake, altrimenti questo componente non è attivo.

I componenti attivi possono avere molti effetti su &kdevelop;. A seconda della loro funzione possono aggiungere menu extra, voci extra di menu, pulsanti degli strumenti extra, ecc.

### Componenti di gestione del progetto in &kdevelop;

antproject | ANT Project Manager (applicazioni &Java;)
autoproject | Gestore di progetti automake
customproject | Gestore di progetti personalizzati
trollproject | Gestore di progetti basati su QMake

### Componenti globali in &kdevelop;

Nome del componente | Descrizione
procedura guidata per le applicazioni | Procedura guidata Nuovo Progetto
storia |
konsole | Konsole incorporata
editor-chooser | Sceglie un editor di testo interno
doctreeview | Visualizzatore di documentazione
openwith |
fileselector | Un widget di selezione dei file
uimode | Personalizza la modalità dell'interfaccia
texttools | Strumenti di testo aggiuntivi
tipofday | Suggerimenti del giorno
grepview | Una versione grafica dell'utility grep
cvs | Supporto per il CVS
strumenti |
regexptest | Verifica le espressioni regolari
abbrev | Espansore di abbreviazioni
filter |
valgrind | Un frontend grafico per valgrind

### Componenti di supporto per il linguaggio in &kdevelop;

cppsupport | Supporto per C/C++
fortransupport | Supporto per Fortran
javasupport | Supporto per &Java;
perlsupport | Supporto per Perl
phpsupport | Supporto per PHP
pythonsupport | Supporto per Python

### Componenti specifici del progetto in &kdevelop;

astyle |
buglist |
classview | Classview Manager
ctags |
debugger | Gestore del debugger &GNU;
diff |
distpart |
doxygen |
fileview |
javadebugger |
manager |
nedit |
outputviews |
perforce |
qeditor |
scripting |
scriptproject |
sourcenav |
svn |
visualboyadvance |
windowmenu |

## Esempi delle modalità dell'interfaccia utente di &kdevelop;

### Modalità IDEAl

Cliccare qui per ritornare alla panoramica delle modalità.

Screenshot

Modalità IDEAl di &kdevelop;

Cliccare qui per ritornare alla panoramica delle modalità.

Screenshot

Modalità IDEAl di &kdevelop; con le linguette chiuse

Questo screenshot di esempio illustra uno dei principali vantaggi della modalità IDEAl: rende disponibile una grande area di lavoro. Tutte le viste degli strumenti sono disponibili facendo clic sulla linguetta corrispondente.

Probabilmente servirà un po' di tempo per prendere confidenza con le icone nella barra delle linguette. Se si è disorientati si può posizionare il mouse su una linguetta e aspettare alcuni secondi: apparirà una descrizione di aiuto. In questo screenshot viene mostrato l'aiuto corrispondente al Gestore Automake, che descrive la linguetta inferiore della barra destra.

Cliccare qui per ritornare alla panoramica delle modalità.

### Modalità finestre childframe

Cliccare qui per ritornare alla panoramica delle modalità.

Screenshot

Modalità finestre childframe di &kdevelop;

Cliccare qui per ritornare alla panoramica delle modalità.

### Modalità a schedario

Cliccare qui per ritornare alla panoramica delle modalità.

Screenshot

Modalità a schedario di &kdevelop;

Cliccare qui per ritornare alla panoramica delle modalità.

### Modalità finestra toplevel

Cliccare qui per ritornare alla panoramica delle modalità.

Screenshot

Modalità finestra toplevel di &kdevelop;

Cliccare qui per ritornare alla panoramica delle modalità.

## Ulteriori informazioni

### Ricevere Informazioni

(... da scrivere ...)

### Segnalazioni di bug

(... da scrivere ...)

### Licenza

&underFDL; &underGPL;

## Cambiamenti

### Cambiamenti a questo documento

- 2003-01-03 — Inizio di questo changelog

## Bibliografia

(... da scrivere ...)

### GNU Make Manual

### GNU Automake

### GNU Autoconf

### Using the GNU Compiler Collection

Richard M.Stallman

### GNU Libtool

### GNU Autoconf, Automake, and Libtool

1st edition

October 2000

New Riders Publishing ISBN 1578701902

### Advanced Programming in the &UNIX; Environment

1st edition

June 1992

W. Richard Stevens Addison-Wesley Pub Co ISBN 0201563177

### Thinking in C++, Volume 1: Introduction to Standard C++

2nd Edition

April 15, 2000

Bruce Eckel Prentice Hall ISBN 0139798099

### Open Source Development with CVS

2nd Edition

October 12, 2001

The Coriolis Group ISBN 158880173X

### Programming PHP

1st edition

March 2002

O'Reilly & Associates ISBN 1565926102

### Programming Python

2nd Edition

March 2001

Mark Lutz O'Reilly & Associates ISBN 0596000855

### Gui Programming With Python : Using the Qt Toolkit

Bk&Cd-r edition

January 2002

Boudewijn Rempt Opendocs Llc ISBN 0970033044

### Programming Perl

The Camel book

3rd Edition

July 2000

O'Reilly & Associates ISBN 0596000278

### Learning Perl

The Lama book

3rd Edition

July 15, 2001

O'Reilly & Associates ISBN 0596001320
&documentation.index;