几个星期后我面临着一个巨大的问题.我已经在IIS7(W2008 SP1)下托管了一个asp.net应用程序,并且每隔几个小时就开始消耗50%的CPU,可能没有用户连接.这是可以理解的,因为我们使用Quartz.net来进行一些应用程序的重新定义,但是我们还没有重现这个问题.
这是使用JetBrains dotTrace 3.1制作的跟踪,而CPU很高:http://mycenter.info/tmp/DotTraceSnapshot.zip
通常浪费CPU的进程是w3wp.exe,但在过去的几天里,sqlserver(2008)和memcached(1.2.1,以及周一更新到1.2.4 beta)也杀死了CPU.奇怪的是,有些时候memcached开始消耗100%并且其统计数据显示它很安静,但是在发出请求时它工作正常.
这是w3wp的故障转储(或堆栈跟踪转储),使用WinDbg :(基于本指南:http://blogs.technet.com/marcelofartura/archive/2006/09/15/troubleshooting-iis-100-cpu -issues-step-by-step-intermediary.aspx)
0:000> ~
. 0 Id: 1be4.1d3c Suspend: 1 Teb: 7ffdf000 Unfrozen
1 Id: 1be4.b1c Suspend: 1 Teb: 7ffde000 Unfrozen
2 Id: 1be4.12a0 Suspend: 1 Teb: 7ffdd000 Unfrozen
3 Id: 1be4.19d0 Suspend: 1 Teb: 7ffdc000 Unfrozen
4 Id: 1be4.1714 Suspend: 1 Teb: 7ffd7000 Unfrozen
5 Id: 1be4.1a18 Suspend: 1 Teb: 7ffd6000 Unfrozen
6 Id: 1be4.12ac Suspend: 1 Teb: 7ffd5000 Unfrozen
7 Id: 1be4.dec Suspend: …Run Code Online (Sandbox Code Playgroud) 我正在编写一个JNI项目,我在尝试运行Java代码时遇到以下错误日志.它告诉我有问题的框架是一个jvm.dll,并试图隔离问题,我试图找出我的问题究竟在哪里(在JVM与我的本机代码)我附加了线程日志部分,如果需要可以附加其余部分.我也尝试重新安装JVM.
Java运行时环境检测到致命错误:
pc = 0x6d8fefb5的EXCEPTION_ACCESS_VIOLATION(0xc0000005),pid = 720,tid = 3128
JRE版本:6.0_21-b07 Java VM:Java HotSpot(TM)客户端VM(17.0-b17混合模式,共享windows-x86)有问题的框架:V [jvm.dll + 0xfefb5]
---------------线程---------------
当前线程(0x02189000):JavaThread"main"[_thread_in_vm,id = 3128,stack(0x02120000,0x02170000)]
siginfo:ExceptionCode = 0xc0000005,读取地址0x00000000
寄存器:EAX = 0x00000000,EBX = 0x02189118,ECX = 0x02189000,EDX = 0x6da2f76c ESP = 0x0216fa84,EBP = 0x0216facc,ESI = 0x02189000,EDI = 0x00000000 EIP = 0x6d8fefb5,EFLAGS = 0x00010246
栈顶的:(SP = 0x0216fa84)0x0216fa84:0216fb38 0216fae4 34497370 0216faa0 0x0216fa94:
6d8010e0 02189000 0216fd34 0216fad0 0x0216faa4:6d906d09 02189000 00000006 00000004 0x0216fab4:
0216fb38 0216fae8 02189000 02189a08 0x0216fac4:000004c4 6da2f76c 0216faf0 57669c1a 0x0216fad4:
02189118 0216fbf0 00000000 0216fb04 0x0216fae4:0216fb04 CCCCCCCC 0216fb04 0216fb38 0x0216faf4: …
我想使用MiniDumpWriteDump()API从另一个进程A.我这样做是因为转储崩溃的进程B MSDN这样说:
如果可能的话,应该从单独的进程调用MiniDumpWriteDump,而不是从被转储的目标进程中调用.
MiniDumpWriteDump()定义如下:
BOOL WINAPI MiniDumpWriteDump(
__in HANDLE hProcess,
__in DWORD ProcessId,
__in HANDLE hFile,
__in MINIDUMP_TYPE DumpType,
__in PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam,
__in PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam,
__in PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);
Run Code Online (Sandbox Code Playgroud)
特别是,ExceptionParam的类型为PMINIDUMP_EXCEPTION_INFORMATION,其定义如下:
typedef struct _MINIDUMP_EXCEPTION_INFORMATION {
DWORD ThreadId;
PEXCEPTION_POINTERS ExceptionPointers;
BOOL ClientPointers;
} MINIDUMP_EXCEPTION_INFORMATION, *PMINIDUMP_EXCEPTION_INFORMATION;
Run Code Online (Sandbox Code Playgroud)
现在我想知道如何准备以下2个参数:
ThreadId 抛出异常的线程的标识符.
ExceptionPointers 一个指向EXCEPTION_POINTERS结构指明该异常的计算机独立描述,并在异常时的处理器的上下文.
在进程A中运行时,如何在进程B中获取错误的线程id和异常指针?
谢谢.
我目前正在研究在单声道下运行的ac#linux应用程序.虽然,我相信我已经处理了可能在我的程序中抛出的任何可能的异常,但是我应该错过任何异常,我想知道是否有一种方法,当C#应用程序崩溃时它会创建一个核心转储文件,所以我可以看到例外并通过它来尝试确定导致问题的原因,如GDB对C程序的影响.
我在我的应用程序中使用OpenSuse 12.1.
感谢您的任何帮助,您可以提供.
我正在尝试在 Visual Studio 2013 中调试转储文件 (.DMP)。我单击了“仅使用托管进行调试”操作,但无法传递此错误:
来源不可用
该模块的调试信息中缺少源信息
您可以在“反汇编”窗口中查看反汇编。要始终查看丢失源文件的反汇编,请更改“选项”对话框中的设置。
我努力了:
我有一个通过任务管理器获取的进程的完整内存转储.
我可以确定当时机器上的时间吗?
我的转储文件中有一个如下所示的调用堆栈。我想在调用堆栈中找到我的代码,但找不到。分析我的转储的起点是什么?我的程序的链接选项是release/Od。
msvcr120.dll!abort()
msvcr120.dll!terminate()
msvcp120.dll!_Call_func$catch()
msvcr120.dll!_CallSettingFrame()
msvcr120.dll!__CxxCallCatchBlock(_EXCEPTION_RECORD * pExcept=0x0000002885f9b010)
ntdll.dll!RcConsolidateFrames()
msvcp120.dll!_Call_func(void * _Data=0x00000028835d5ce0)
msvcr120.dll!_callthreadstartex()
msvcr120.dll!_threadstartex(void * ptd=0x000000288366e410)
kernel32.dll!BaseThreadInitThunk()
ntdll.dll!RtlUserThreadStart()
Run Code Online (Sandbox Code Playgroud) 我想了解crashlytics这样的工具是如何工作的?
就像,他们得到崩溃日志堆栈跟踪只是在投掷和系统崩溃前几分钟?他们访问崩溃后产生的某种崩溃转储?在Object-C中,我们有主要的.也许在运行时附加一些代码,但他们如何处理?我附上代码以查看此崩溃报告的位置?
每次我从睡眠中恢复笔记本电脑时,我都经历过BSOD.我已经分析了minidump的使用,WinDbg并且始终是导致进程Slack.exe.我搜索了一下,我发现了https://www.tenforums.com/bsod-crashes-debugging/80584-0x139-bsods-daily-when-waking-up-sleep.html.他们的建议是不要使用Windows 10 Slack版本或在睡觉前关闭它.
Slack.exe导致此BSOD的真正原因是什么?我假设Slack没有直接包含任何内核驱动程序?
错误检查分析输出(简化):
KERNEL_SECURITY_CHECK_FAILURE (139)
A kernel component has corrupted a critical data structure. The corruption
could potentially allow a malicious user to gain control of this machine.
Arguments:
Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).
Arg2: ffffe580f4e26e40, Address of the trap frame for the exception that caused the bugcheck
Arg3: ffffe580f4e26d98, Address of the exception record for the exception that caused the bugcheck
Arg4: 0000000000000000, Reserved
Debugging Details: …Run Code Online (Sandbox Code Playgroud) crash-dumps ×10
c++ ×2
crash ×2
debugging ×2
dump ×2
minidump ×2
asp.net ×1
bsod ×1
c# ×1
crashlytics ×1
ios ×1
java ×1
jvm ×1
mono ×1
performance ×1
report ×1
slack ×1
visual-c++ ×1
w3wp ×1
winapi ×1
windbg ×1
windows-10 ×1