Frage

Dies könnte nicht wie eine Programmierung Frage erscheinen, sondern befasst sich grundsätzlich mit dem Code.

Ich habe ein folgendes Stück Test-Code, der außerhalb der Grenzen offensichtliche Fehler wie Array-Index hat, Speicherverlust: -

#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;
   }

}

Dieser Code wird gebaut auf einem MS-Visual Studio 2008.

Ich versuche, Rational Purify (Version 7.0) zu verwenden, Laufzeitfehler, Speicherlecks in meinem Code zu identifizieren. Auf dem Weg zu, nachdem in Entschlacken einige Hinweise darüber, wie Sie Build-Code für die Nutzung zu lesen, ich unten, was in den MSVS-2008-Projekt Einstellungen vorgenommen habe: -

1.) Disable inkrementeller Link 2.) Debug Information Compiler-Flag / Zi

3) die Linkoption Set -.. „Basic-Laufzeitprüfung auf Default-Wert

4) hinzugefügt, um eine zusätzliche Linker-Option / fixed:.. Nein

5.) Build-Konfiguration Debug ist, aktiviert keine Optimierung.

i Dann bauen und die exe bekommen. Ich benutze diese exe in Entschlacken zu laufen, so dass es Instrumente gleich. Aber das Ausgabefenster in purify nach dem Ausführen / instrumentiert diese exe, zeigt keine Fehler zu Speicherverlust, ..etc, die oben in dem Code vorhanden sind.

Die purify Ausgabefenster zeigt die Ausgabe von verschiedenen Binärdateien (meine exe-Datei und einige andere System-DLLs) es geladen instrumentiert ausgeführt. Aber in der Ausgabe, wo zeigt Daten über meine exe ist, gibt es keine Fehlermeldung.

Mein Gefühl ist, ich mache einen Fehler bei der Angabe Kompilierung / Linker-Optionen beim Aufbau der exe in MS-VS 2008.or das erzeugte ausführbares Format nicht kompatibel ist / verständlich durch Entschlacken?

1.) Was ist hier falsch sein könnte? Was mehr Optionen, ich könnte brauchen, während die exe-Aufbau?

2.) Ist mein Prozess der Verwendung Entschlacken richtig, oder ich bin etwas fehlt? Wie kann ich Entschlacken erhalten alle Fehler in meinem Programm zu zeigen, nach der Laufzeit-Analyse zu tun?

3.) Gibt es ein anderes Werkzeug (frei / kommerzielle Lizenz), die Speicherlecks detecl kann, Array aus gebundenen Fehlern, die Verwendung von nicht initialisierten Zeigern, Variablen, Speicherfehlern etc .. durch Laufzeit-Analyse von C-Code zu tun.

Es tut uns longish Mail, hatte aber klar sein.

Dank.

-AD

War es hilfreich?

Lösung

Nach wütend viele Dinge zu versuchen, im Internet zu lesen, fand ich die Lsg aus. für diesen

In

1) eine neue Umgebungsvariable wie:

Name = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale = 1

2) Neben dem MS Visual Studio Projekteinstellungen, die ich in dem OP erwähnt, unter Einstellung benötigt wird -

C / C ++ -> Code Generation = Laufzeit-Bibliothek -> Multi-Threaded Debug / MTd

Und wenn u die ausführbare Datei in purify laufen, müssen Sie auf Configure Selective klicken, wählen Sie Ihre exe.

Dann, wenn u laufen, sollte es die erforderliche Fehlerbezogenen Informationen colelct.

-AD

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top