【问题标题】:Catch an exception in embedded mono在嵌入式单声道中捕获异常
【发布时间】:2015-01-15 10:50:18
【问题描述】:
MonoObject * pException = NULL;
// this method will cause an exception in c#, something like null exception
MonoString * pResult = (MonoString*) mono_runtime_invoke(g_pGetMethod, NULL, monoargs, &pException);  
/* debugging with gdb:
    (gdb) n
    Program received signal SIGPWR, Power fail/restart.
    then this program stopped.
*/
char * szResult = NULL;
if(pException == NULL)
{
    szResult = mono_string_to_utf8(pResult);
} else
{
    //MonoString * pMsg = mono_object_to_string_ex(pException, NULL);
    //szResult = mono_string_to_utf8(pMsg);
    szResult = "Mono throwed an Exception!";
}

我正在尝试像上面那样捕获 MonoException,
有什么我弄错了吗?
g_pGetMethod 是一个静态函数 btw,如果没有抛出异常,这些代码可以正常工作

【问题讨论】:

    标签: c exception-handling mono embedding


    【解决方案1】:

    您应该指示 gdb 忽略 SIGPWR(以及更多信号):

    handle SIGXCPU SIG33 SIG35 SIGPWR nostop noprint
    

    更多关于使用 gdb 调试 Mono 的信息可以在这里找到:http://www.mono-project.com/docs/debug+profile/debug/

    【讨论】:

    • 谢谢,配置 $HOME/.gdbinit 后,gdb 工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2011-02-26
    • 2019-02-15
    • 1970-01-01
    相关资源
    最近更新 更多