procdump不为StackOverflow异常创建转储

时间:2013-09-27 11:09:01

标签: c# .net sysinternals procdump

我正在尝试为.Net C#应用程序创建崩溃转储。 为此,我编写了一个代码,它将使Stack Overflow异常的应用程序崩溃:

namespace Crashme
{
    class Program
    {


        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                System.Threading.Thread.Sleep(2000);
            }

            Console.WriteLine("Calling text");

            crash obj = new crash();
            obj.sMyText = "abc";

        }
    }

    class crash
    {
        public string sMyText
        {
            get { return sMyText; }
            set { sMyText = value; }
        } 
    }
}

我正在使用的procdump命令:

.\procdump.exe -ma -e crashme.exe crash_dump1.dmp

应用程序正在按预期崩溃,procdump也正在捕获它。我可以看到procdump监控控制台打印。 但是没有创建转储。

猜猜我没有使用正确的procdump命令。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:3)

我最近在制作中遇到了堆栈溢出错误。这篇博客文章有捕获它的方法。

https://blogs.msdn.microsoft.com/benjaminperkins/2017/06/28/capture-a-stackoverflowexception-and-make-a-dump-0xc00000fd/

基本上你使用这些选项

procdump -accepteula -e 1 -f C00000FD.STACK_OVERFLOW -g -ma <PID> <OUTPUT PATH>

答案 1 :(得分:1)

我认为你正在使用正确的命令。我复制了你的问题。它只是不起作用。您可以尝试在sysinternals论坛上发帖。

http://forum.sysinternals.com/

我还有一个未解决的问题:procdump:

launching procdump from a 64-bit service doesn't work when running as Local Service or Local System

我们公司转而使用adplus。我们感到非常高兴,能够针对不同类型的异常配置不同的操作非常好。

即使使用adplus,看起来也有点棘手。

Help catching StackOverflowException with WinDbg and ADPlus

答案 2 :(得分:-2)

需要先安装procdump并指定转储目录。

procdump.exe -i C:\Path\To\Dumps