كيفية إنشاء تفريغ عملية إدارة ASP.NET الحالية للتصحيح؟

StackOverflow https://stackoverflow.com/questions/1181536

سؤال

أحاول تصحيح تطبيق ASP.NET. انها صعبة للغاية حيث يحدث الخطأ فقط في قانون تم إصداره منتشر للإنتاج. وبعد لا يمكن إعادة إنتاجه في بيئات التطوير أو الاختبار.

أرغب في التحقيق في مزيد من خلال إنشاء ملف تفريغ في سطر معين في التعليمات البرمجية حيث تحدث المشكلة. ومع ذلك، لا يمكن نقل بيئة الإنتاج في أي وقت بسبب متطلبات العمل. هذا أيضا لماذا لا يمكن استخدام التصحيح عن بعد.

هل يعرف أحد كيف يمكنني إنشاء ملف تفريغ يتم إنشاؤه ل W3WP.exe في نقطة معينة في التعليمات البرمجية المدارة، ومع ذلك، لا يزال يسمح بقية التطبيق للعمل بشكل طبيعي؟

هل كانت مفيدة؟

المحلول

إذا كان تطبيق الويب لديه حقوق الوصول للقيام بذلك، فيمكنك نشر رمز رمز جديد، ثم يمكنك إنشاء ملف تفريغ يدويا باستخدام DBGHELP API:

[DllImport("DbgHelp.dll", SetLastError = true)]
        static extern bool MiniDumpWriteDump(IntPtr ProcessHandle, int ProcId, IntPtr FileHandle, int DumpType, IntPtr ExcpInfo, IntPtr UserInfo, IntPtr ExtInfo);
    private static void DumpIt()
    {
        string outputFileName = "c:\\mem.dmp";

        using (FileStream stream = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite))
        {
            using (Process proc = Process.GetCurrentProcess())
            {
                MiniDumpWriteDump(proc.Handle, proc.Id, stream.SafeFileHandle.DangerousGetHandle(), (int)0x00000306, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
            }
        }
    }

نصائح أخرى

فقط لإضافة إلى مشاركة Frederik، إلقاء نظرة على مدونة Tee's، ولكن التركيز على استخدام ADPLOS وهي أداة سطر الأوامر تساعدك في إنشاء ملفات تفريغ للعمليات قيد التشغيل. يحتوي Tess على عدد من الأمثلة على كيفية استخدام هذه الأداة لجمع ملفات التفريغ لتصحيح التصحيح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top