1

Ich möchte einen Unterbrechungspunkt für die Dateiänderung für eine bestimmte Datei oder beim Öffnen einer bestimmten Datei festlegen. Dies ist eine Datei, die unsere Software während Teilen von Legacy-Code öffnet und modifiziert. Ich bin mir nicht sicher, wie ich dieses Problem angehen soll. Ein Ansatz, über den ich nachgedacht habe, war, alle Orte zu finden, an denen wir Dateien öffnen, alle zu durchbrechen und den Dateipfad zu untersuchen, um festzustellen, ob es der Pfad ist, mit dem wir uns befassen. Der andere Ansatz, den ich mir vorgenommen habe, war, einen Unterbrechungspunkt im Code zum Öffnen des Dateisystems zu setzen, wenn der Pfad dem entspricht, worüber ich mich Sorgen mache (möglicherweise schwieriger, da ich derzeit unter Windows laufe. Dies könnte unter Linux eine Option sein Eine Visual Studio 2005-Lösung wäre ideal und eine Linux-Lösung möglicherweise nützlich.Unterbrechungspunkt bei Dateiänderung oder Datei öffnen

Derzeit verwende ich Visual Studio 2005 für mein Softwareprojekt in C++. Ich konnte nichts online finden als eine Option oder einen Ansatz, den die Leute gerne machen würden.

Normalerweise würde ich sagen, dass ich nur verstehen sollte, wo diese Datei geöffnet wird. Leider ist dieser Codeabschnitt ziemlich schwer zu verstehen und wird neu berechnet, aber für die unmittelbare Zukunft würde mir diese Funktionalität helfen.

Vielen Dank meine Frage zum Lesen,

-Brian J. Stinar-

+0

Ich bin nicht 100% sicher, ob folgendes mit VS2005 möglich ist (mit 08 und 10 ist es), aber trotzdem: Es ist möglich, einen Breakpoint zu machen, der eine Pause auslöst, wenn eine spezielle Bedingung getroffen wird (zB wenn ein Zähler in einer For-Schleife trifft auf einen gesuchten Wert, so dass die Schleife in ihrer n-ten Schleife suspendiert wird ... hoffe, ich könnte es irgendwie verständlich mit meinem Englisch erklären: D ... – Incubbus

Antwort

1

Setzen bedingter Haltepunkt zu kernel32.CreateFileW und Dateinamen überprüfen.
Dann erhalten Sie Datei-Handle, so können Sie bedingten Haltepunkt Kernel32.CreateFileW setzen und Datei-Handle überprüfen.

Sie können auch CreateFileW haken und __debugbreak() darin aufrufen.

+0

Ich verstehe, wovon Sie reden auf konzeptioneller Ebene, aber ich bin mir nicht sicher, wie Sie den Kernel32.CreateFileW-Breakpoint einfügen sollen. Haben Sie dazu noch weitere Informationen? Vielen Dank. –

+0

@Brian Stinar: fügen Sie es einfach manuell im Breapoints-Fenster hinzu, verwenden Sie "CreateFileW" als Funktionsname. – Abyx

Verwandte Themen