Domanda

Questo potrebbe non apparire come una questione di programmazione, ma intrinsecamente occupa di codice.

Ho una seguente pezzo di prova codice, che ha errori evidenti come indice di array fuori limite, perdita di memoria: -

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

Questo codice è costruito su una Studio MS-visivo 2008.

Sto cercando di utilizzare Rational Purify (versione 7.0) per identificare gli errori in fase di esecuzione, le perdite di memoria nel mio codice. Verso dopo aver letto alcune indicazioni su come costruire il codice per l'utilizzo in Purify, ho fatto qui di seguito le cose nelle impostazioni del progetto MSVS-2008: -

1.) Disabilitare collegamento incrementale 2.) le informazioni di debug del compilatore bandiera è / Zi

.

3) Impostare l'opzione di Linker -. "Basic run-time per il controllo Valore predefinito

.

4) Aggiunta un'opzione del linker extra / fisso:. No

5.) Costruire config è di debug, alcuna ottimizzazione abilitata.

Poi ho costruire e ottenere l'exe. Io uso questo exe per l'esecuzione in Purificare in modo che gli strumenti stessi. Ma la finestra di output in Purificare dopo l'esecuzione / strumentazione questo exe, mostra nessun errore circa perdita di memoria, .etc che sono presenti nel codice precedente.

La finestra di uscita purificare mostra l'uscita di diversi binari (il mio file exe e alcune altre DLL di sistema) è strumentato caricato, eseguito. Ma in uscita dove si trova mostra i dati del mio exe, non v'è alcun messaggio di errore.

La mia sensazione è che sto facendo un errore nel dare opzioni di compilazione / linker, mentre la costruzione del exe in MS-VS 2008.or Il formato eseguibile generato non è compatibile / comprensibile da Purificare?

1.) Cosa potrebbe esserci di sbagliato? Ciò che più opzioni di cui avevo bisogno, mentre la costruzione del exe?

2.) Il mio processo di utilizzo purificano corretta, o mi sto perdendo qualcosa? Come posso ottenere Purify per mostrare tutti gli errori nel mio programma dopo aver fatto l'analisi in fase di esecuzione?

3.) C'è qualche altro strumento (/ licenza commerciale libero) che può detecl perdite di memoria, serie di errori legati, l'uso di puntatori non inizializzati, variabili, memoria corruzione ecc .. di fare l'analisi in fase di esecuzione di codice C.

Ci scusiamo per la posta lunghetto, ma doveva essere chiaro.

Grazie.

-AD

È stato utile?

Soluzione

Dopo aver provato furiosamente molte cose, leggendo su internet, ho scoperto la soln. per questo

1) Aggiungere una nuova variabile ambiente come:

Name = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale = 1

2) A parte le impostazioni di progetto di Visual Studio SM di cui ho parlato nel PO, di seguito è necessaria impostazione -

C / C ++ -> Generazione di codice = libreria di runtime -> Debug Multi-threaded / MTd

E quando u eseguire l'eseguibile di purificare, è necessario fare clic su Configure selettivo, selezionare l'exe.

Poi, quando u gestita, dovrebbe colelct le informazioni relative errore richiesto.

-AD

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top