Titel sagt irgendwie alles. Der übliche SOS-Befehl ! Bpmd ist ohne Namen nicht gut.
Einige Ideen, die ich hatte:
Die anonyme Methode ist nicht wirklich anonym. Es verbirgt sich einfach hinter einem vom Compiler erzeugten Namen.
Betrachten Sie dieses kleine Beispiel:
%Vor% Um den Rückgabewert zu finden, müssen wir den Namen der Methodenimplementierung finden. Dazu müssen wir den MethodDesc der umgebenden Methode lokalisieren. In diesem Beispiel ist Main()
, also:
Über den MethodDesc können wir die IL für Main()
Beachten Sie die lustig aussehenden Namen. Sie sind die Namen des generate-Delegate-Typs und der tatsächlichen Methode. Die Methode heißt <Main>b__0
. Schauen wir uns die Methode an:
Da hast du es. MethodDesc ist 00153024 und wie der Kommentar sagt, können Sie mit! Bpmd den Haltepunkt mithilfe von MethodDesc festlegen.
Wenn es für Ihr Szenario schwierig ist, den Namen "& lt; & gt; ...." zu finden, wie wäre es mit einer normalen Methode? Dies ist normalerweise sehr einfach; Das Einzige, was am schwierigsten ist, sind erfasste Variablen, aber das ist nicht so schlimm - zum Beispiel machen sie dasselbe:
%Vor%Geben Sie den Methodendeskriptor aus, auf den die Aktion verweist. Wegbeschreibung hier .
Tags und Links c# debugging windbg anonymous-methods sos