pon*_*cho 10 error-handling visual-c++ windows-runtime winrt-xaml windows-store-apps
我正在开发一个Windows应用商店应用,我收到的WinRT错误并没有真正给我任何信息,所以我想知道如何理解这些错误.
基本上我在OnPointerPressed内部调用以下行得到错误:
m_gestureRecognizer->ProcessDownEvent(args->GetCurrentPoint(nullptr));
Run Code Online (Sandbox Code Playgroud)
错误是:
DXAML2.exe中0x76F54B32(KernelBase.dll)的第一次机会异常:0x40080201:WinRT发起错误(参数:0x80070057,0x00000044,0x03CEE72C).
这个错误不常出现,我唯一改变的是这行现在包装在一个if子句中,该子句测试当前指针的PointerId是否与我刚刚使用==存储的指针相同,例如:
if(args->GetCurrentPoint(nullptr)->PointerId == m_UIPointerID)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.
所以我的问题分为两部分:
谢谢你的时间.
PS我想另一件事情已经改变了,屏幕上已经有2个指针(被推入这个GestureRecognizer的指针)以及另一个指针,因此PointerId检查.
ste*_*veb 13
"如何解读这样的错误"......
对于任何WinRT originate错误,您可以获取参数列表中的第三个地址(在您的示例中为0x03CEE72C),并在内存窗口中查找错误的描述.
在调试时,在抛出错误时中断并通过Debug - > Windows - > Memory - > Memory 1打开内存窗口
复制并粘贴地址以获取"易于查找"的错误消息.
正如拉曼所说 - 最好查找显示的十六进制值。第一个是内存位置,如果没有符号/源,它不会告诉您太多信息,在本例中是由 Windows 直接报告的。也许公共符号可以更多地揭示错误的来源,但错误代码查找更有帮助。
如果您Bing 搜索 0x80070057,您将找到一篇关于常见 HRESULT 值的 MSDN 文章的 MSDN 文章,其中列出了
E_INVALIDARG:一个或多个参数无效:0x80070057
当然,它不会向您提供所有细节,因此您需要进行理论分析。也许您只能调用args->GetCurrentPoint(nullptr)一次,并且应该存储/重用该值?也许手势识别器配置不正确?也许应用程序窗口在抛出异常或线程错误时不可见。也许由于用这些语句过滤掉了一些对手势识别器的预期调用,所以错过了这些调用"if"。
| 归档时间: |
|
| 查看次数: |
9854 次 |
| 最近记录: |