1
我使用OutArgument創建了一個WF程序。當我嘗試訪問Dictionary上的鍵時,我得到一個KeyNotFoundException,並且該過程終止。我創建了一個失敗的進程轉儲,CLR線程堆棧如下。我可以在Main方法框架上看到四個當地人。確定正在通過方法訪問什麼變量
如何確定主框架上的哪個本地引用了正在訪問的字典?我必須檢查所有當地人嗎?還是可以從上面的框架中確定?
0:000> !clrstack -a
OS Thread Id: 0xf20 (0)
Child SP IP Call Site
0032ebc8 7742019d [HelperMethodFrame: 0032ebc8]
0032ec84 7123f326 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].get_Item(System.__Canon)
PARAMETERS:
this = <no data>
key = <no data>
LOCALS:
<no data>
<no data>
0032ec90 00210235 UserInArgument.Program.Main(System.String[])
PARAMETERS:
args (0x0032ecec) = 0x023823dc
LOCALS:
0x0032ece8 = 0x0244a8fc
0x0032ece4 = 0x0248ba2c
0x0032ece0 = 0x023824dc
0x0032ecdc = 0x0244a8fc
0x0032ecd8 = 0x02465fb8
此方法在任何情況下都不起作用。例如,我無法確定傳遞給控制檯的字符串文字。 Readline()函數。我故意編碼導致InvalidCastException。 – dcrearer
什麼是所有奇怪的UTF字符?它在WinDbg中看起來像那樣嗎? –
@thomas是的,他們是 – dcrearer