2011-01-13 4 views
0

Ich erhalte einen Pufferüberlauffehler in einem Projekt, das von VS2005 in VS2008 konvertiert wird. Ich würde gerne wissen, ob es Werkzeuge gibt, die helfen können, wo der Pufferüberlauf aufgetreten ist.Pufferüberlauffehler im Projekt von VS2005 in VS2008 konvertiert

+0

Ja, der Debugger funktioniert gut. –

+0

Meinst du visual Studio Debugger? Beim Aufruf des Call-Stacks könnte ich mich auf ein Modul eingrenzen, in dem der Fehler auftritt. Aber dieses Modul hat immer noch viele Funktionen. Gibt es also eine Möglichkeit, auf eine Funktion hinzuweisen, die den Fehler erzeugt? – Lakshmi

Antwort

0

Ich nehme an, Sie verwenden C++.

In Microsoft C++ gibt es einen Compiler-Schalter /GS, um herauszufinden, ob es Pufferüberläufe gibt. Für Details und wie es funktioniert, siehe MSDN Compiler Security Checks In Depth. Zumindest in C# -Entwicklung (aber hoffentlich auch in C++) gibt es eine Debugger-Option "Break wenn eine Exception ist ...", die die Programmausführung stoppt, wenn eine Exception ausgelöst wird (weil die C++ Runtime das erkannt hat) es war überrannt ein Puffer. in VS2010 unter Debug/Ausnahme ist ...

Sie können auch Microsofts PREfast verwenden, die für potentiell unsichere Funktionen ihren Quelltext durchsucht (strcpy)

+0

können Sie bitte erwähnen, wie Prefast verwenden, um den Code – Lakshmi

+0

scannen Nein, ich kann nicht "erwähnen, wie Prefast zu verwenden", weil ich nur darüber gelesen habe, aber es nicht selbst verwendet. – k3b

0

Wegen der Differenz in behavoiur von sprintf, einem Nicht nullterminierte Zeichenketten wurden über die Array-Grenzen hinaus geschrieben, was wiederum den Stack korrumpierte und zu einem Puffer über den Lauf führte Udio meldet einen Pufferüberlauf und kann somit helfen, den Grund für einen Systemabsturz herauszufinden.

Verwandte Themen