c++ debugging - Debuggen mit Befehlszeilenparametern in Visual Studio



code typescript (6)

Selbst wenn Sie die ausführbare Datei außerhalb von Visual Studio starten, können Sie den Befehl "Attach" verwenden, um Visual Studio mit der bereits ausgeführten ausführbaren Datei zu verbinden. Dies kann z. B. nützlich sein, wenn Ihre Anwendung als Plug-in in einer anderen Anwendung ausgeführt wird.

Ich entwickle eine C ++ - Befehlszeilenanwendung in Visual Studio und muss sie mit Befehlszeilenargumenten debuggen. Im Moment program.exe -file.txt ich die generierte EXE-Datei mit den Argumenten, die ich brauche (wie diese program.exe -file.txt ), aber auf diese Weise kann ich nicht debuggen. Kann ich irgendwo die Argumente für das Debuggen angeben?


Klicken Sie mit der rechten Maustaste auf das Projekt in Solution-Fenster von VS, wählen Sie "Debugging" (auf der linken Seite), geben Sie die Argumente in das Feld "Command Arguments" ein:


Die Mozilla.org FAQ zum Debuggen von Mozilla unter Windows ist hier von Interesse.

Kurz gesagt, der Visual Studio-Debugger kann in einem Programm über die Befehlszeile aufgerufen werden, so dass man die Befehlszeilenargumente beim Aufruf eines Befehlszeilenprogramms direkt in der Befehlszeile angeben kann.

Das sieht für Visual Studio 8 oder 9 wie folgt aus

 devenv /debugexe 'program name' 'program arguments'

Es ist auch möglich, über eine Explorer-Aktion ein Programm im Visual Studio-Debugger zu starten.


Microsoft Visual Studio Ultima 2013.

Sie können einfach zum Menü DEBUG gehen → HaupteigenschaftenKonfigurationseigenschaftenDebuggen und dann sehen Sie das Feld für die Befehlszeilenargumente.

Tatsächlich können Sie dieselben Eingabeargumente für alle verschiedenen Konfigurationen und nicht nur für das Debuggen festlegen.

Wählen Sie im Pulldown-Menü der Konfiguration: Alle Konfigurationen und fügen Sie die Eingabeargumente ein (jedes Argument durch Leerzeichen getrennt).

Jetzt können Sie Ihr Programm in verschiedenen Modi ausführen, ohne jedes Mal die Eingabeargumente ändern zu müssen.


Ja, es befindet sich im Abschnitt Debugging der Eigenschaftenseite des Projekts.

In VS seit 2008: Klicken Sie mit der rechten Maustaste auf das project , wählen Sie properties , gehen Sie zum Abschnitt Debugging - es gibt ein Feld für " Command Arguments ". (Tipp: keine solution , sondern project )


Ich arbeite seit ca. 4-5 Jahren mit Software- / Firmware-Entwicklung und Umwelttests von miniaturisierten Satelliten *, hier möchte ich meine Erfahrungen teilen.

* ( miniaturisierte Satelliten sind aufgrund ihrer relativ kleinen, begrenzten Größen für ihre elektronischen Komponenten viel anfälliger für einzelne Ereignisse als größere Satelliten )

Um sehr kurz und direkt zu sein: Es gibt keinen Mechanismus, um von der Software / Firmware selbst, ohne mindestens eine Kopie der minimal funktionierenden Version der Software / Firmware irgendwo für Wiederherstellungszwecke - und mit der Hardwareunterstützung - von einer erkennbaren, fehlerhaften Situation zu erholen die Erholung (funktional).

Diese Situation wird normalerweise sowohl auf der Hardware- als auch auf der Softwareebene gehandhabt. Hier, wenn Sie es wünschen, werde ich Ihnen mitteilen, was wir auf der Softwareebene tun können.

  1. ... Wiederherstellungszweck .... Stellen Sie die Fähigkeit zur Verfügung, Ihre Software / Firmware in einer realen Umgebung zu aktualisieren / neu zu kompilieren. Dies ist ein fast unverzichtbares Feature für jede Software / Firmware in hoch ionisierter Umgebung. Ohne dies könnten Sie so viele Software / Hardware haben, wie Sie wollen, aber irgendwann werden sie alle explodieren. Also, bereiten Sie diese Funktion vor!

  2. ... minimal funktionierende Version ... Responsive, mehrere Kopien, Mindestversion der Software / Firmware in Ihrem Code. Dies ist wie abgesicherter Modus in Windows. Anstatt nur eine voll funktionsfähige Version Ihrer Software zu haben, müssen Sie mehrere Kopien der Mindestversion Ihrer Software / Firmware haben. Die minimale Kopie wird normalerweise viel kleiner als die vollständige Kopie sein und fast immer nur die folgenden zwei oder drei Funktionen haben:

    1. fähig, Befehl von externem System zu hören,
    2. fähig, die aktuelle Software / Firmware zu aktualisieren,
    3. fähig, die Verwaltungsdaten der Grundoperation zu überwachen.
  3. ... kopiere ... irgendwo ... Habe irgendwo eine redundante Software / Firmware.

    1. Sie könnten, mit oder ohne redundante Hardware, versuchen, redundante Software / Firmware in Ihrem ARM-uC zu haben. Dies wird normalerweise dadurch erreicht, dass zwei oder mehr identische Software / Firmware in separaten Adressen vorhanden ist, die einen Herzschlag an einander senden, wobei jedoch jeweils nur einer aktiv ist. Wenn bekannt ist, dass eine oder mehrere Software / Firmware nicht reagiert, wechseln Sie zur anderen Software / Firmware. Der Vorteil dieses Ansatzes besteht darin, dass wir sofort nach Auftreten eines Fehlers einen Funktionsersatz durchführen können - ohne irgendeinen Kontakt mit dem externen System / der Partei, die für die Erkennung und Behebung des Fehlers zuständig ist (im Satellitenfall ist es normalerweise das Mission Control Center). MCC)).

      Streng genommen, ohne redundante Hardware, ist der Nachteil, dies zu tun, tatsächlich, dass Sie nicht alle einzelnen Fehlerpunkte eliminieren können . Zumindest haben Sie immer noch einen einzigen Fehlerpunkt, nämlich den Switch selbst (oder oft den Anfang des Codes). Für eine Vorrichtung, die in einer hochionisierten Umgebung (wie Pico / Femto-Satelliten) durch die Größe begrenzt ist, ist die Reduktion des einzelnen Punktes von Fehlern auf einen Punkt ohne zusätzliche Hardware dennoch eine Überlegung wert. Somemore, der Code für den Wechsel wäre sicherlich viel weniger als der Code für das gesamte Programm - erheblich reduziert das Risiko, Single Event in ihm zu bekommen.

    2. Aber wenn Sie dies nicht tun, sollten Sie mindestens eine Kopie in Ihrem externen System haben, die mit dem Gerät in Kontakt kommen und die Software / Firmware aktualisieren kann (im Fall des Satelliten ist es wieder das Kontrollzentrum der Mission).

    3. Sie können die Kopie auch in Ihrem permanenten Speicher in Ihrem Gerät haben, die ausgelöst werden kann, um die Software / Firmware des laufenden Systems wiederherzustellen
  4. ... erkennbare fehlerhafte Situation. Der Fehler muss erkennbar sein , normalerweise durch die Hardware- Fehlerkorrektur / Erkennungsschaltung oder durch einen kleinen Code zur Fehlerkorrektur / Erkennung. Es ist am besten, einen solchen Code klein, mehrfach und unabhängig von der Hauptsoftware / Firmware zu verwenden. Seine Hauptaufgabe besteht nur darin, zu prüfen / zu korrigieren. Wenn die Hardwareschaltung / Firmware zuverlässig ist (z. B. weil sie strahlungsgehärteter als die Pausen ist oder mehrere Schaltkreise / Logiken hat), könnte eine Fehlerkorrektur in Betracht gezogen werden. Aber wenn nicht, ist es besser, es als Fehlererkennung zu machen. Die Korrektur kann durch externes System / Gerät erfolgen. Für die Fehlerkorrektur könnten Sie einen grundlegenden Fehlerkorrekturalgorithmus wie Hamming / Golay23 in Betracht ziehen, da sie einfacher in der Schaltung / Software implementiert werden können. Aber es hängt letztlich von der Fähigkeit Ihres Teams ab. Zur Fehlererkennung wird normalerweise CRC verwendet.

  5. ... Hardware, die die Wiederherstellung unterstützt Jetzt kommt der schwierigste Aspekt zu diesem Thema. Letztlich erfordert die Wiederherstellung, dass die Hardware, die für die Wiederherstellung verantwortlich ist, zumindest funktional ist. Wenn die Hardware dauerhaft defekt ist (normalerweise nachdem die ionisierende Gesamtdosis einen bestimmten Wert erreicht hat), gibt es (leider) keine Möglichkeit, dass die Software bei der Wiederherstellung hilft. Daher ist die Hardware zu Recht von größter Wichtigkeit für ein Gerät, das einem hohen Strahlungsniveau ausgesetzt ist (z. B. Satellit).

Zusätzlich zu dem obigen Vorschlag, den Fehler der Firmware aufgrund eines einzelnen Ereignisses zu antizipieren, möchte ich Ihnen auch vorschlagen zu haben:

  1. Fehlererkennung und / oder Fehlerkorrekturalgorithmus im Kommunikationsprotokoll zwischen den Subsystemen. Dies ist ein weiteres Muss, um unvollständige / falsche Signale von anderen Systemen zu erhalten

  2. Filter in Ihrem ADC lesen. Verwenden Sie den ADC nicht direkt. Filtern Sie es nach Medianfilter, Mittelwertfilter oder anderen Filtern - vertrauen Sie niemals auf Einzelwerte. Sample mehr, nicht weniger - vernünftig.





c++ visual-studio debugging command-line