摘要: 原总结调试排错troubleshootteklaprocess monitorsysinternals 缘起最近同事使用.tsep安装Tekla插件的时候,Tekla提示该插件已经存在了,需要卸载后再安装。同事找了半天,没找到怎么卸载,我也没找到。于是决定弄清楚Tekla是 如何判断一个插件安装与否的。 想必看过我其它排错文章的小伙伴已经猜到了,我们今天文章中的主角依然是process mon... 阅读全文
posted @ 2020-01-30 12:12 BCN 阅读(831) 评论(0) 推荐(0) 编辑
摘要: 原调试debugwindbghangprocess explorer 前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环。你知道怎么快速定位并解决吗?今天跟大家分享几种定位方法,希望对你有所帮助。 如何判断是否有死循环? 通过电脑风扇的声音猜测。 如 阅读全文
posted @ 2020-01-30 11:43 BCN 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 原调试debugwindbg死锁deadlock 前言最近我们的程序在退出时会卡住,调查发现是在卸载dll时死锁了。大概流程是这样的:我们的dll在加载的时候会创建一个工作线程,在卸载的时候,会设置退出标志并等待之前开启的工作线程结束。为了研究这个经典的死锁问题,写了一个模拟程序,用到的dump文件及示例代码参考附件。{% note info %}这也是几年前在项目中遇到的一个问题,我对之前的... 阅读全文
posted @ 2020-01-06 21:59 BCN 阅读(1075) 评论(0) 推荐(0) 编辑
摘要: 原调试debugwindbg死锁deadlock 前言项目里的一个升级程序偶尔会死锁,查看dump后发现是死在了ShellExecuteExW里。经验少,不知道为什么,于是在高端调试论坛里发帖求助,链接如下http://advdbg.org/forums/6520/ShowPost.aspx根据张银奎老师的描述可知,应该是拥有关键段的线程意外结束了。仔细检查项目中的代码,发现程序中有使用Ter... 阅读全文
posted @ 2020-01-06 21:54 BCN 阅读(755) 评论(0) 推荐(0) 编辑
摘要: 原总结vsmsbuildhow-to 缘起 最近在编译项目的时候总是报虚拟内存不足(项目中使用了大量的模板)。一般情况下,vs会使用32位的编译工具进行编译,用64位的编译工具应该能解决类似的问题。本以为是一件挺简单的事,但是没想到遇到不少坑,本文记录了折腾的过程,希望对有类似需求的小伙伴有所帮助。 阅读全文
posted @ 2019-10-11 21:35 BCN 阅读(3094) 评论(0) 推荐(0) 编辑
摘要: 原 总结 ratio 概览类定义预定义ratio应用示例代码参考资料 概览std::ratio定义在文件中,提供了编译期的比例计算功能。为std::chrono::duration提供基础服务。 类定义std::ratio是一个模板类,关键代码摘录如下(格式有调整):template struct ratio { static_assert(_Dx != 0, "zero denom... 阅读全文
posted @ 2018-08-14 23:42 BCN 阅读(3178) 评论(0) 推荐(0) 编辑
摘要: 原 总结 STL 标准库 chrono time_point ratio 概览类定义总结思考拓展system_clocksteady_clockhigh_resolution_clock例子参考资料 概览time_point定义在文件中,用来表示时间点。 类定义关键代码摘录如下(格式有调整):template class time_point { public: typedef _C... 阅读全文
posted @ 2018-08-14 23:35 BCN 阅读(3289) 评论(0) 推荐(0) 编辑
摘要: 原 总结 C++11 chrono duration ratio 概览std::chrono::duration描述类定义duration_cast()分析预定义的duration示例代码参考资料 概览c++新标准提供了新的线程库,最近在写测试代码的时候需要让当前线程休眠,之前直接调用windows提供的Sleep()就好了,新标准中可以使用std::this_thread::sleep_fo... 阅读全文
posted @ 2018-08-14 23:09 BCN 阅读(25916) 评论(0) 推荐(1) 编辑
摘要: 原 总结 C++11 thread 概览std::thread类定义各个成员函数的简单介绍例子更多参考资料 概览从C++11开始提供了线程的支持,终于可以方便的编写跨平台的线程代码了。除了std::thread类,还提供了许多其它便利同步的机制,本篇总结是C++11学习笔记系列的首篇总结。 std::threadstd::thread定义在中,提供了方便的创建线程的功能。 类定义class... 阅读全文
posted @ 2018-08-11 13:29 BCN 阅读(4211) 评论(0) 推荐(0) 编辑
摘要: 原, 总结, 调试, 调试案例 项目中遇到一个诡异的问题,程序在升级到.net4.6.1后会崩溃,提示访问只读内存区。大概现象如下:debug版不崩溃,release版稳定崩溃。只有x64位的程序崩溃,32位及anycpu编译出来的程序运行不会崩溃。出问题的代码范围很小以上信息,各位有什么想法呢?由于release版可以稳定重现,而且范围不大,故通过二分排除法很快定位到了导致问题的代码。最后发现... 阅读全文
posted @ 2018-08-11 00:29 BCN 阅读(167) 评论(0) 推荐(0) 编辑
摘要: win10的拖拽贴靠功能被禁用了,偶然的机会,在设置中看到了相关的设置项,如下图 直觉告诉我一定是设置注册表中的某一项,于是决定调查下具体的注册表位置。请出procmon.exe,然后关闭贴靠功能,停止收集。在收集到的信息中只关注注册表相关的信息,而且Result是Success的,向下浏览的时候发 阅读全文
posted @ 2017-10-27 09:38 BCN 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 修改如下注册表项下的InitialKeyboardIndicators的值为80000002,重启即可。 HKEY_USERS\.Default\Control Panel\Keyboard\ HKEY_CURRENT_USER\Control Panel\Keyboard\ 代码如下 Window 阅读全文
posted @ 2017-10-27 09:36 BCN 阅读(2336) 评论(0) 推荐(0) 编辑
摘要: sysinternal suite中的livekd.exe可谓神器。可以用来观察本地内核的一些状态,当然抓内核dump再合适不过了。 在使用livekd的时候遇到了一些问题,现总结如下: 使用livekd进行本地内核调试,需要管理员权限,这个没啥好说的。 livekd需要内核文件的调试符号的支持,可 阅读全文
posted @ 2017-10-12 16:31 BCN 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 原脚本how-toprocess monitorsysinternalsvsvisual studiovs2017vs2019注册表 缘起 vs有一个功能 —— 在起始页会显示最近打开的工程列表,方便用户快速打开之前打开过的工程文件。但是打开的工程文件多了,想要找到自己需要的工程文件也不是那么容易的 阅读全文
posted @ 2017-05-22 09:59 BCN 阅读(5072) 评论(1) 推荐(2) 编辑
摘要: 原 总结 API 一直对CreateFile的参数dwDesiredAccess和dwShareMode有什么不同不是很清楚,今天重读 windows核心编程的时候终于豁然开朗了。 真是书读百遍,其义自见。简要总结如下:dwDesiredAccess表示本次CreateFile想要获取的权限: 只读(GENERIC_READ),只写(GENERIC_WRITE),可读写(GENERIC_READ... 阅读全文
posted @ 2017-04-27 11:33 BCN 阅读(2084) 评论(0) 推荐(0) 编辑
摘要: 原 总结 debug tools 工具使用 1. 下载安装Message Analyzer从Message Analyzer下载链接下载,安装过程从略。说明:关于Message Analyzer的视频教程(youtube上的视频,可能需要科学上网),可以在程序主界面上看到。 2. 连接远端进行实时查看启动,点击New Session,在弹出的New Session界面中点击Live Tra... 阅读全文
posted @ 2017-04-14 10:21 BCN 阅读(1021) 评论(0) 推荐(0) 编辑
摘要: 最近想使用etw作为高效的日志机制,也不想暴露机密信息(关键信息在msnifest文件中)。也就是不能在客户机器上注册自己的provider,那需要manifest文件。这样采集回来的.etl文件如果直接在wpa中打开,会很难看,基本看不出什么有用的信息,如图1 图1 用wpa打开poor.etl文 阅读全文
posted @ 2017-03-30 22:57 BCN 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 1. 缘起2. 创建VHD文件并写入系统镜像到VHD文件2.1 制作VHD文件2.1.1 纯界面创建2.1.2 命令行创建2.2 把系统镜像写入VHD文件3. 添加VHD文件到系统引导3.1 添加新的引导项3.2 新建引导项3.2.1 硬盘分区3.2.2 拷贝UEFI启动文件到ESP分区3.2.3 拷贝装有系统镜像的VHD文件到指定目录下3.2.4 修改BCD, 添加VHD启动项4. 小结5. ... 阅读全文
posted @ 2017-03-10 08:12 BCN 阅读(8884) 评论(0) 推荐(0) 编辑
摘要: 2019-09-14更新:本文已经在新博客重新整理发布,请各位读者移步。 process explorer有个功能是替换任务管理器,它是怎么实现的呢??? windows有个注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVer 阅读全文
posted @ 2017-02-06 07:06 BCN 阅读(676) 评论(0) 推荐(0) 编辑
摘要: 原调试debugwindbg崩溃crash 前言最近程序会不定期崩溃,很是头疼!今晚终于忍无可忍,下决心要干掉它!从之前的几个相关的dump可以猜到是有接口未释放导致的问题,但没有确认到底是哪个接口。本篇总结记录了找到这个接口的过程。{% note info %}这是几年前在项目中遇到的一个问题。我对之前的笔记进行了整理重新发布于此。{% endnote %} 初识问题用windbg打开d... 阅读全文
posted @ 2017-01-13 14:34 BCN 阅读(756) 评论(0) 推荐(0) 编辑