我想要獲取從asp.net中的dll引發的異常的函數名稱。從DLL獲取函數名稱
回答
您應該能夠利用堆棧跟蹤
的表示一個堆棧跟蹤,它是一個或多個 堆棧幀的 有序集合。
甲的StackFrame被創建並上推 調用堆棧一個線程的執行期間由每個函數調用 。 堆棧幀始終包含 MethodBase信息,並且可選地包含文件名稱,行號和 列號信息。
StackFrame信息將最多 信息與調試版本 配置。默認情況下,調試 構建包含調試符號,而 版本構建不包含。調試 符號包含大部分文件, 方法名稱,行號和列 用於構造 StackFrame對象的信息。
您可以從例外中創建一個StackTrace類並分析這些幀。
例如:
public void Throw()
{
throw new MyException();
}
public void CallThrow()
{
Throw();
}
[Test]
public void GetThrowingMethodName()
{
try
{
CallThrow();
Assert.Fail("Should have thrown");
}
catch (MyException e)
{
MethodBase deepestMethod = new StackTrace(e).GetFrame(0).GetMethod();
string deepestMethodName = deepestMethod.Name;
Assert.That(deepestMethodName, Is.EqualTo("Throw"));
}
}
仍然我不能得到該方法的名稱,告訴我如何從DLL中拋出異常的方法的名稱。 – Hari 2010-04-05 10:07:03
@ram,你得到的結果是什麼?你可以發表一個你是代碼的例子,並調用引發異常的外部程序集嗎? – Elisha 2010-04-05 10:19:14
這裏我的例子的代碼: 空隙測試() { /*異常這裏談到*/ } 公共類方法{ 空隙負載() { 測試(); } } 這裏class name'method'是一個dll文件,即時通訊從方法'test()'得到異常。但是堆棧跟蹤以「load()」的形式返回方法的名稱。我需要獲取方法名稱'test()'。 – Hari 2010-04-05 10:41:05
你可以嘗試用system.diagnostic命名空間的幫助這裏的堆棧跟蹤的對象是linqpad測試的源代碼,你可以嘗試一下。
void Main()
{
try {
test();
}
catch(Exception ex) {
StackTrace st = new StackTrace();
st.GetFrame(1).GetMethod().Name.Dump();
}
}
// Define other methods and classes here
public void test()
{
throw new NotImplementedException();
}
- 1. 如何從.dll(系統)獲取導出的函數名稱?
- 2. 如何從VC++ .dll文件獲取函數名稱(函數聲明)?
- 3. 獲取類名稱函數的名稱
- 4. 從自己獲取函數名稱
- 5. 獲取函數名稱
- 6. LuaBind獲取函數名稱
- 7. Unmangling C++ DLL函數名稱
- 8. 宏從函數內部獲取函數名稱和參數值
- 9. 從函數地址獲取函數名稱
- 10. in flex,從函數對象獲取函數名稱
- 11. R獲取函數參數的名稱
- 12. 如何從CloudFormation AWS :: Lambda :: Alias獲取函數名稱和別名?
- 13. DLL中獲取函數PTR
- 14. 函數名與序數值 - 從DLL模塊獲取函數地址
- 15. 從函數名獲取內置函數
- 16. 從函數指針獲取函數名?
- 17. 獲取裝飾函數的名稱?
- 18. django:getattr函數(獲取字段名稱)
- 19. 獲取函數的名稱空間
- 20. JavaScript - 獲取調用函數的名稱
- 21. 按名稱獲取函數描述符:
- 22. 動態獲取函數名稱
- 23. 獲取當前VBA函數的名稱
- 24. jQuery +獲取函數的名稱
- 25. 獲取注入CFC的函數名稱?
- 26. 在javascript中獲取函數名稱
- 27. 在Swift中獲取函數名稱
- 28. 如何獲取函數的名稱?
- 29. DLL中函數的名稱是什麼?
- 30. 從* .icl,* .dll中提取圖標名稱
你的意思是你想獲取拋出異常的方法的名稱? – Elisha 2010-04-05 09:10:11
是的,我需要在DLL中的方法的名稱,拋出異常 – Hari 2010-04-05 09:15:13