Ich verwende Visual Studio 2015 Update 3 und ich habe eine sehr einfache reine Win32-Konsole C++ "Hello World" wie diese, die keinen anderen Zweck dient als experimentieren:Kann nicht in CRT-Code Schritt verwenden, wenn Laufzeitbibliothek als dll
int main()
{
printf("Hello world");
char *test = (char*)malloc(100);
}
ich in malloc
nicht treten kann, wenn das Projekt die Multi-Thread-DLL-Laufzeitbibliothek (Projekt Eigenschaften-> Konfiguration Eigenschaften-> C/C++/verwendet -> Laufzeitbibliothek: Multithreaded-Debug-DLL (/ MDd)).
Aber wenn ich diese Einstellung in Multithread-Debug (/ MTd) ändern, dann funktioniert Steping in malloc
funktioniert gut.
Aber stepping info printf
funktioniert immer gut. Der Einstieg in meinen eigenen Code funktioniert immer auch.
Gibt es eine Möglichkeit zum Aktivieren der DLL für die Laufzeitbibliothek?
Diese DLL wurde von Microsoft erstellt, Sie haben nicht die PDB dafür. Sie müssen den Symbolserver von Microsoft aktivieren, indem Sie ihn aktivieren. Extras> Optionen> Debugging> Symbole. Funktioniert gut für Update 2, nicht sicher über 3, ich werde die große Anzahl von Fehlern in diesem Update warten. –
@HansPassant Ich habe es gerade ausprobiert, aber "Microsoft Symbol Servers" wurde bereits überprüft, und das würde nicht erklären, warum "printf" funktioniert, aber nicht "malloc". BTW Ich habe gestern Update 2 installiert, aber nachdem die Installation abgeschlossen war, stellte sich heraus, dass es tatsächlich Update 3 war. Ich habe nicht versucht, mit früheren Versionen von VS in 'malloc' zu treten. –
Malloc() befindet sich in einer anderen DLL, ucrtbased.dll. Das hätte sich nicht ändern sollen, ähm. Verwenden Sie Debug> Windows> Module, und sehen Sie in der Spalte Symboldatei nach, wo sich die PDB befindet. Löschen Sie es, damit es eine neue Kopie herunterladen muss. –