小编C. *_*ent的帖子

附加.net调试器,同时仍然提供有用的死亡日志记录

我想在我的代码的根目录中使用某种catch-all异常机制,因此当应用程序意外终止时,我仍然可以提供一些有用的日志记录.

有点像

static void Main () {
    if (Debugger.IsAttached)
        RunApp();
    else {
        try {
            RunApp();
        }
        catch (Exception e) {
            LogException(e);
            throw;
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

虽然这一切都运行正常,但我的问题是当我想在引发异常后附加调试器时.

由于异常会转移到运行时,因此窗口会提示附加visual studio,但由于已经重新抛出,因此堆栈中的所有本地和参数都已丢失.

有没有记录这些异常,同时仍提供附加调试器并保留所有有用信息的方法?

c# debugging stack-trace

6
推荐指数
1
解决办法
1176
查看次数

按值返回时强制执行RVO /移动构造

假设我有一个带有复制构造函数和移动构造函数的对象'foo',以及一个函数

foo f() {
    foo bar;
    /* do some work */
    return bar;
}
Run Code Online (Sandbox Code Playgroud)

该标准似乎表明编译器将尝试执行:NRVO,通过r值ref返回,按值返回,失败; 以该顺序.

有没有办法强制编译器永远不会按值返回,因为我的复制构造函数非常昂贵?

c++ rvalue-reference move-constructor return-value-optimization c++11

4
推荐指数
1
解决办法
703
查看次数