Ich spreche über Managed .NET-Code. Wenn wir irgendein Programm ausführen und VS an es anhängen, können wir Parameterwerte für jede Methode im Aufrufstapel sehen. Ich möchte eine Protokollierungslösung erstellen, die die Werte aller Parameter für jede Methode im Call-Stack protokolliert. Eigentlich brauche ich diese Info, falls eine Ausnahme auftritt.Ist es möglich, Parameter Werte für jeden Frame im Call-Stack in erhalten. NET
Ich weiß, dass es mit Profiling API möglich ist. Aber ich frage mich, ist es nur mit verwaltetem Code möglich?
UPDATE: Ok, wahrscheinlich mit reinem .NET ist es unmöglich. Dann kann mit einer Art von nicht verwalteten Code ... der Punkt ist, dies aus der Anwendung selbst zu tun. Eine Anwendung im Ausnahmefall könnte eine Bibliothek aufrufen (möglicherweise nicht verwaltet), die Informationen über Methodenwerte im Aufruf-Stack zurückgibt. Nur Gedanken ...
Beachten Sie, dass Optimierungen, insbesondere im "Freigabe" -Modus, Inlining usw., dazu führen können, dass Informationen nicht im Call-Stack angezeigt werden. Sie sollten sich besser nicht auf diese Art von Informationen verlassen. – Lucero
Sicher, die Logik der App sollte sich nicht auf solche Informationen verlassen. Aber ich spreche nur über Protokollierung für diagnostische Zwecke. – Shrike
Ich habe das verstanden. Wenn Sie jedoch einen Protokollauszug erhalten und keine zuverlässigen Informationen darin haben, ist seine Nützlichkeit nur begrenzt. – Lucero