怎样找出卡西欧计算器堆栈错误跟踪错误的问题

值不能为 null。 参数名: value
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出
[问题点数:40分]
本版专家分:0
CSDN今日推荐
本版专家分:44913
2015年10月 总版技术专家分月排行榜第一
2015年9月 总版技术专家分月排行榜第二
2015年8月 总版技术专家分月排行榜第三
2015年10月 .NET技术大版内专家分月排行榜第一
本版专家分:0
本版专家分:174296
2015年9月 总版技术专家分月排行榜第一2015年8月 总版技术专家分月排行榜第一2015年7月 总版技术专家分月排行榜第一2015年6月 总版技术专家分月排行榜第一2015年5月 总版技术专家分月排行榜第一2015年4月 总版技术专家分月排行榜第一
2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
2016年3月 总版技术专家分月排行榜第三
本版专家分:0
本版专家分:44913
2015年10月 总版技术专家分月排行榜第一
2015年9月 总版技术专家分月排行榜第二
2015年8月 总版技术专家分月排行榜第三
2015年10月 .NET技术大版内专家分月排行榜第一
本版专家分:10
本版专家分:10
匿名用户不能发表回复!
其他相关推荐说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错_百度知道
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错
异常详细信息:System.Exception:出错堆栈跟踪:[Exception:出错]_Default.Page_Load(Objectsender,EventArgse)inf:\ASP\网络编程资料在stu010(192.168.1.142)上在stu010(192.168.1.77)...
异常详细信息: System.Exception: 出错堆栈跟踪: [Exception: 出错]
_Default.Page_Load(Object sender, EventArgs e) in f:\ASP\网络编程资料 在 stu010 (192.168.1.142) 上 在 stu010 (192.168.1.77) 上\实训资料\实训参考代码\第3章\Practice3\Default.aspx.cs:18
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627--------------------------------------------------------------------------------版本信息: Microsoft .NET Framework 版本:2.0.; ASP.NET 版本:2.0.
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:12
获赞数:60
擅长:暂未定制
Page_Load这个方法有代码错了,自己Debug跟一下看看吧。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。为什么需要自定义错误类型
JavaScript 原生提供了7种错误类型,分别是 Error, EvalError, SyntaxError, RangeError, ReferenceError, TypeError, 和 URIError。当我们在编写提供给其他开发者使用的库(包)时,为了在必要的时候给予开发者错误信息反馈(例如,开发者所传参数类型不正确),我们通常会抛出错误,但是原生提供的这些错误类型不够有针对性,不能让开发者一眼就能看出是我们的库所抛出的错误,所以我们需要定制自己的错误类型,当开发者错误使用库并且运行代码时能够在控制台看到我们所定义的错误类型,例如:
CustomError: something bad happened.
Error: something bad happened.
另外,我们可以为自己的错误类型添加额外的信息字段,原生提供的错误只有 name(错误类型),message(错误信息),stack(部分js环境提供堆栈追踪信息),这些字段可能不能够满足我们的需求,我们想给我们所抛出的错误添加一个 reason 字段来表明抛出错误的原因,那么我们就需要自定义错误类型。
自定义错误需要继承自Error类
我们自定义的错误类型最好继承自Error类,但这并不是强制规定,这只是一种良好的代码习惯,因为当开发者通过 try / catch 捕获到异常时,可能会进行进一步的判断:
if (error instanceof Error) { ... }
这样我们的自定义错误才能被有效捕获。
ES5 自定义错误的写法
function CustomError(message) {
// 实例化自定义错误时所传的错误信息参数
this.message = message
// name 指明该错误类型(同时在控制台所打印的错误类型即由此字段指明),不指明默认为Error。
this.name = 'CustomError'
// 捕获到当前执行环境的堆栈追踪信息,为自定义错误实例添加 `stack` 字段进行保存,
// 第二个参数的含义为:堆栈追踪只会展示到`CustomError`这个函数(即自定义错误的构造函数)被调用之前。
Error.captureStackTrace(this, CustomError)
// 原型链继承 (详见 JS高程 一书)
CustomError.prototype = new Error
// 在自定义错误的原型上添加构造器函数为CustomError,
// 若不添加构造器,当获取自定义错误的构造器时,获取的是上一步`new Error`实例的原型的构造器,即`Error`构造函数
CustomError.prototype.constructor = CustomError
ES6 自定义错误的写法
ES6 添加了 class 这一语法糖,可以方便的写出继承关系:
class CustomError extends Error {
constructor (message) {
super(message)
this.name = 'CustomError',
// 这一步可不写,默认会保存堆栈追踪信息到自定义错误构造函数之前,
// 而如果写成 `Error.captureStackTrace(this)` 则自定义错误的构造函数也会被保存到堆栈追踪信息
Error.captureStackTrace(this, this.constructor)
接下来我们通过ES 5/6 两种不同的写法来自定义错误类型后, 使用下面的代码在 Node.js 中进行测试。我们先推测堆栈追踪自栈顶向下依次应该是:
at new CustomError // 若堆栈追踪到自定义错误的构造函数时,会有此打印
测试代码:
// `c` 函数抛出自定义错误
function c() {
throw new CustomError('something bad happened!')
// `b` 函数调用 `c`
function b() {
// `a` 函数调用 `b`
function a() {
a() // 执行 `a` 函数
} catch (err) {
// 判断所抛出的错误是否为 `Error` 的子类实例
if (err instanceof Error) {
console.log('Capture the error:')
console.log(err.stack) // 打印堆栈追踪信息
console.log(err instanceof CustomError, err instanceof Error) // 错误是否为(或继承自)CustomError 和 Error 类型
console.log(err.constructor.name) // 自定义错误的构造器名称
对比ES 5/6 两种自定义错误的方式,运行结果均为:
Capture the error:
CustomError: something bad happened!
at c (/Users/xavier/Documents/demos/javascript-demo/test.js:19:8)
at b (/Users/xavier/Documents/demos/javascript-demo/test.js:23:2)
at a (/Users/xavier/Documents/demos/javascript-demo/test.js:27:2)
at Object.&anonymous& (/Users/xavier/Documents/demos/javascript-demo/test.js:31:2)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
CustomError
测试说明两种自定义错误的方式效果相同,ES6 class 写法虽然方便,但只是语法糖,ES5 的写法有利于我们理解 JavaScript 基于原型的继承方式,两者各有利弊。
参考链接:
0 收藏&&|&&0
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。HOW TO: 查找问题的异常堆栈时出现的 UnhandledExceptionFilter 调用堆栈跟踪中
察看本文应用于的产品
使用 Windbg.exe 打开转储文件
使用 Windbg.exe 确定异常堆栈
展开全部 | 关闭全部
没有异常处理程序定义处理引发的异常时,将调用该 UnhandledExceptionFilter 函数。 通常,该函数会将异常传递给在 Ntdll.dll 为文...
没有异常处理程序定义处理引发的异常时,将调用该 UnhandledExceptionFilter 函数。 通常,该函数会将异常传递给在 Ntdll.dll 为文件其中捕获,并尝试处理设置。
在进程的内存快照所在某些情况下,可以看到锁定点保存到线程的线程的调用 UnhandledExceptionFilter 函数。 在这的种情况下您可以按照本文以确定导致此异常的 DLL。
使用 Windbg.exe 打开转储文件
下载并安装调试程序。 要下载调试程序,请访问下面的 Microsoft 网站:
Microsoft 调试工具()
打开安装调试程序,文件夹,然后双击 Windbg.exe 启动调试器。
在 文件 菜单上单击 打开的崩溃转储 (或按 Ctrl+D),然后选择要查看该转储文件。
使用 Windbg.exe 确定异常堆栈
在 Windbg.exe,打开进程的.dmp 文件。
请确保您符号路径指向正确的位置。 有关如何执行此操作,请访问下面的 Microsoft Web 站点:
如何获得符号()
在命令提示符下键入 ~ * kb 以列出所有进程中的线程。
标识对函数调用的线程 Kernel32! UnhandledExceptionFilter 。 它类似于以下:
id: f0f0f0f0.a1c
Suspend: 1 Teb 7ff72000 Unfrozen
ChildEBP RetAddr
Args to Child
09a8f334 77eb9b46 00000 ntdll!ZwWaitForSingleObject+0xb [i386/usrstubs.asm @ 2004]
09a8f644 77ea7e7a 09a8f66c 77e861ae 09a8f674 KERNEL32!UnhandledExceptionFilter+0x2b5
[D:/nt/private/windows/base/client/thread.c @ 1753]
09a8ffec bf0b8 00000 KERNEL32!BaseThreadStart+0x65 [D:/nt/private/windows/base/client/support.c @ 453]
切换到该线程 (在本例中,该线程是"~120s")。
在第一个参数的指定位置显示内存内容 Kernel32! UnhandledExceptionFilter 通过 添加 第一个参数 。 此指向 EXCEPTION_POINTERS 结构
0:120& dd 09a8f66c
09a8f738 09a8f754 09a8f698 77f8f45c
09a8f738 09a8ffdc 09a8f754 09a8f710
09a8ffdc 77f8f5b5 09a8ffdc 09a8f720
77f8f3fa 09a8f738 09a8ffdc 09a8f754
09a8f710 77efad4
09a8f738 74af6e0 09a8f910
01dc8ad8 0df28
2e 09a8f71c
第一个 DWORD 代表异常记录。 若要获取有关异常的类型信息,请请在命令提示符处运行以下:
.exr first DWORD from step 6
0:120& .exr 09a8f738
ExceptionAddress: 78011f32 (MSVCRT!strnicmp+0x)
ExceptionCode: c0000005
ExceptionFlags:
NumberParameters: 2
Parameter[0]:
Parameter[1]:
Attempt to read from address
第二个 DWORD 是上下文记录。 若要获取上下文的信息,请在命令提示符处运行以下:
.cxr second DWORD from step 6
0:120& .cxr 09a8f754
eax=027470ff ebx=7803cb28 ecx= edx= esi= edi=09a8fad4
eip=78011f32 esp=09a8fa20 ebp=09a8fa2c iopl=0
nv up ei ng nz na po nc
MSVCRT!strnicmp+92:
运行 kv 命令获得实际的异常的调用堆栈。 这有助于您识别可能未被处理正确的过程中实际问题
ChildEBP RetAddr
Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
09a8fa2c 780119ab 09a8fad4 a8faa8 MSVCRT!strnicmp+0x92
09a8fa40 a8fad4 d7044fd MSVCRT!stricmp+0x3c
09a8fa80 6e5a6ef6 09a8fad4 e5e298 MSVCRT!stricmp+0xd
09a8fa94 6d7043bf 09a8fad4 09a8faa8 0000001c IisRTL!CLKRHashTable::FindKey+0x59 (FPO: [2,0,1])
09a8faac 749fc22d 09a8fad4 01d553b0 0000001c ISATQ!CDirMonitor::FindEntry+0x1e
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/infocomm/atq/dirmon.cpp @ 884]
09a8fac4 749fd1cb 09a8fad4 09a8fb10 525c3a46 asp!RegisterASPDirMonitorEntry+0x6e
(FPO: [EBP 0x09a8fb08] [2,0,4]) [D:/nt/private/inet/iis/svcs/cmp/asp/aspdmon.cpp @ 534]
09a8fb08 749fcdd6 a8fcbc 018d1f28 asp!CTemplateCacheManager::RegisterTemplateForChangeNotification+0x8a
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/cachemgr.cpp @ 621]
09a8fb3c 74a08bfe 000fa 74a30958 asp!CTemplateCacheManager::Load+0x382
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/cachemgr.cpp @ 364]
09a8fc68 74a0d4c9 04cf28 09a8fcbc asp!LoadTemplate+0x42
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/exec.cpp @ 1037]
09a8fcc0 74a2c3e5 7ee38 09a8fd58 asp!CHitObj::ViperAsyncCallback+0x3e8
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/hitobj.cpp @ 2414]
09a8fcd8 787c048a aa1b03 01e91ed8 asp!CViperAsyncRequest::OnCall+0x3f
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/viperint.cpp @ 194]
09a8fce0 77aa1b03 01e91ed8 77a536d8
COMSVCS!STAActivityWorkHelper+0xa
(FPO: [1,0,0])
09a8fd24 77aaf8 000864dc 787c0480 ole32!EnterForCallback+0x6a
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1759]
09a8fe50 77aa17ea 000864dc 787ced8 ole32!SwitchForCallback+0x12b
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1644]
09a8fe78 77aa60c1 000864dc 787ced8 ole32!PerformCallback+0x50
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1559]
09a8fed4 77aa5fa6 04f2b4c0 787ced8 ole32!CObjectContext::InternalContextCallback+0xf5
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/context.cxx @ 3866]
09a8fef4 787bd3c3 04f2b4c0 787ced8 ole32!CObjectContext::DoCallback+0x1a
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/context.cxx @ 3746]
09a8ff24 787bf373 a8ffec COMSVCS!STAActivityWork::DoWork+0x73
(FPO: [0,4,2])
09a8ffb4 77efe94 000007 COMSVCS!STAThread::STAThreadWorker+0x2bb
(FPO: [EBP 0x09a8ffec] [1,31,4])
09a8ffec bf0b8 00000 KERNEL32!BaseThreadStart+0x52
(FPO: [Non-Fpo]) [D:/nt/private/windows/base/client/support.c @ 451]
=========================
1、崩溃发生过程
程序执行过程中,崩溃,弹出mssagebox,提示R6034错误。查看r6034错误:表示运行库的manifest设置不正确,
2、提取dump过程
1)查看任务管理器,崩溃的进程还在。判定可以用Windbg截获dump
2)打开windbg,file--attach to a process,选择崩溃进程如test.
3)使用命令 .dump /mf d:/test.dmp
4)确认提取成功:查看在d盘根目录下是否有test.dmp文件。
3、分析崩溃原因
1) 打开windbg,file--open crash dump ,打开dump文件test.dmp
2) 查看崩溃文件版本:使用lm v m test*
获得崩溃进程文件test.exe文件信息
1. 0:008& lm v m test*
module name
(deferred)
Image path: C:/Program Files (x86)/test/test.exe
Image name: test.exe
Timestamp:
Wed Dec 10 17:29:43 C07)
ImageSize:
File version:
Product version:
1.0.1126.34
File flags:
0 (Mask 3F)
40004 NT Win32
File type:
File date:
Translations:
InternalName:
ProductVersion:
1,0,1126,34
FileVersion:
3)加载对应符号pdb,根据Timestamp: Wed Dec 10 17:29:43 C07),找到对应的pdb文件,选择file--symble file path 将pdb文件路径加入。
1. 0:008& ~*k
看所有线程的堆栈
Id: 990.c38 Suspend: 1 Teb: 7efdd000 Unfrozen
3. ChildEBP RetAddr
4. WARNING: Stack unwind information not available. Following frames may be wrong.
5. ae81c8 user32!WaitMessage+0x15
6. 0017d8ac 75af478a user32!GetCursorFrameInfo+0x7c
7. af46f5 user32!SetMessageQueue+0x4e8
8. 0017dab0 75b2d2c3 user32!SetMessageQueue+0x453
9. b2d342 user32!MessageBoxTimeoutW+0x52
10. b2d390 user32!MessageBoxTimeoutA+0x76
11. b2d3d5 user32!MessageBoxExA+0x1b
12. 8f986e user32!MessageBoxA+0x18
13. 0017dbc0 718f1c2c msvcr80!__crtMessageBoxA+0x1b4
14. 0017dbe4 718f2217 msvcr80!_NMSG_WRITE+0x162
15. f2348 msvcr80!__p__winver+0x13c
16. dfcc0 msvcr80!_CRTDLL_INIT+0x1d
17. e9b28 ntdll!RtlReleasePebLock+0x28
18. e95ae ntdll!LdrFindResourceDirectory_U+0x9bf
19. 0017dfcc 777029db ntdll!LdrFindResourceDirectory_U+0x445
20. e4d50 ntdll!RtlDestroyQueryDebugBuffer+0x48d5
765e4dca kernel32!LoadLibraryExW+0x112
kernel32!LoadLibraryW+0x11 此处为程序到系统程序的一个临界点。分析首先从这里分析起。
23. 26e43 test!KLoadDllUtility::AutoSearchLoadLibrary+0x5f [e:/kloaddllutility.h @ 32]
24. 26877 test!KPopSupport::InitializeKPopSystem+0x29 [e:/popimport.cpp @ 1037]
25. ……………………
分析线程堆栈,一般情况下,出现messagebox都是不正常的。由于此次崩溃系统有弹出messagebox,而刚好第一个线程堆栈有messagebox相关字眼,所以怀疑是第一个线程堆栈出现问题。
1. 0:008& dd
(dd表示以四个字节的方式查看ebp信息。)
265e9 d3578
(表示上一个函数的ebp;
表示函数返回地址
表示函数的参数 查看msdn,loadlibary只有一个参数,并且参数是一个字符串,所以只有有效,并且表示一个地址。)
fc1a8 00000
6. 00 003a0063
7. 572 d0061
9. 5c 006e0069
10. 0:008& db
(db以字节的方式查看参数内容)
00 3a 00 5c 00 50 00-72 00 6f 00 67 00 72 00
c.:./.P.r.o.g.r.
00 6d 00 20 00 46 00-69 00 6c 00 65 00 73 00
a.m. .F.i.l.e.s.
00 28 00 78 00 38 00-36 00 29 00 5c 00 4b 00
.(.x.8.6.)./.e.
00 6e 00 67 00 73 00-6f 00 66 00 74 00 5c 00
i.r.g.s.o.f.t./.
15. b 00 69 00 6e 00 67 00-73 00 6f 00 66 00 74 00
e.i.n.g.s.o.f.t.
00 49 00 6e 00 74 00-65 00 72 00 6e 00 65 00
.I.n.t.e.r.n.e.
00 20 00 53 00 65 00-63 00 75 00 72 00 69 00
t. .h.e.c.u.r.i.
00 79 00 20 00 32 00-30 00 30 00 38 00 5c 00
t.y. .2.0.0.8./.
19. 0:008& db (db继续显示,使内容显示完全)
00 43 00 4f 00 4d 00-2e 00 64 00 6c 00 6c 00
S.C.O.M...d.l.l.
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
................
00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
...............
4、分析结果总结
分析发现 :调用了scom.dll.根据对产品功能的了解,test不会调用该dll,说明调用出错,调错了文件,接下来需要做的是理清test调用流程,修改bug啦。
至于为啥错误id为r6034,是因为scom.dll需要运行库,而test进程内部未设定。
From:http://blog.csdn.net/kingpcn/article/details/6319869
WinDBG技巧:列出当前进程所有装载的模块(DLL/EXE)
调试的时候想要知道当前进程装载了哪些模块,每个模块被装载的代码地址段是在哪个范围,可以使用lm命令。 拿notepad为例,输入lm命令可以发现: 0:001& lmstart
Windbg解决一个闪退
问题描述 :一个外部的程序与主程序交互,登录之后即闪退
2.设置symbol search path:
3.启动指定的exe,并填写启动参数
4.程序Crash时,windbg会自动捕获...
定位“栈溢出”导致的程序崩溃问题
程序在莫名其妙的地方崩溃了,
栈溢出崩溃排查(一)
近日,我们视频平台提交基线测试时,出现录像下载失败崩溃的现象,通过仔细调试发现其是一个很典型的DLL HELL引发的栈溢出,由于在我们的项目中,引用了大量的DLL,而且有很多DLL是多方引用的,很容易...
Windbg的gflags.exe调试堆栈溢出,访问越界等问题。
gflags.exe是Windbg下的一个小工具,非常好用,对于调试程序隐藏的bug很有帮助。  如:我在vs2015中遇到访问越界的问题,但程序不会在越界的地方发生崩溃中断,而是在一个不可能存在访问...
根(root)的概念原本打算放在前面讲代的概念的时候提一下,但是根的概念也涉及到终结队列和GC句柄表,所以不适合放在代里面讲;但是讲代的时候难免会涉及到根的相关概念,所以也不适合放在后...
指定进程启动时Windbg自动Attach
1. 在Windbg安装目录中找到gflags.exe
2. 配置信息
3. 保存运行a.exe时就会自动Attach上。
有没有碰到过程序启动就因为异常直接crash?有没有碰到程序启动之后什么反应也没有?有没有碰到过程序启动之后去触发另一个进程失败?有没有碰到别人的程序调用了你的代码,出现问题以后,让你来调查,而你只有...
其实并不是只有在生成不了转储文件的情形下才能使用双机调试,在任何情况下都是可以使用的,尤其是调试内核问题时,双机调试不必限于转储文件类型,均可获得一切可以获得的信息,相当于完全内存转储了。而且,双机调...
简介:当出现进程CPU占用率高、进程假死(不退出)、进程发生崩溃时,可以参考以下的windbg命令使用说明,进一步发现有价值的调试信息。...
没有更多推荐了,个回答更新Android Studio(或sdk ..)后有相同的问题。可以通过设置EditText的inputType来修复它。android:inputType=&text&
似乎是TextView的一个已知错误。yunxunwl.com · 创建者 (已认证)优启梦 · AE (已认证)扫描二维码扫描关注云+社区

我要回帖

更多关于 堆栈错误是什么意思 的文章

 

随机推荐