软件架构师何志丹
文章平均质量分 82
闻缺陷则喜何志丹
本人拙作《喜缺全书算法册》欢迎指教,可在CSDN下载https://download.csdn.net/download/he_zhidan/88368465
展开
-
boundcheck6在win7下用不了
---------------------------test.exe - 应用程序错误---------------------------应用程序无法正常启动(0xc0000005)。请单击“确定”关闭应用程序。 ---------------------------确定 --------------------------- 可能版本太老,不支持Win7,原创 2016-06-25 10:44:37 · 451 阅读 · 0 评论 -
利用dump文件反向定位崩溃位置的体会
利用VS2005 调试(F5) dump的体会:1,int long 等看的到,char*看不到. 短std::string看的到,长std::string看不到。2,pdb必须和dll一致,重新生成的不行。原创 2016-10-29 11:44:26 · 918 阅读 · 0 评论 -
写了一个小组件获取当前显卡名称和显存
写了一个小组件获取当前显卡名称和显存测试程序在多台机器上没问题。集成到主程序崩溃,原因如下:此组件用到了opengl32.lib, 主程序用到了opengl.lib,两者不一致。组件也用主程序的opengl.lib,而不时opengl32.lib,就好了。原创 2016-06-24 11:03:04 · 661 阅读 · 0 评论 -
利用map和cod文件定位崩溃位置的例子和习题
例子和习题下载http://download.csdn.net/detail/he_zhidan/9656738原创 2016-10-18 14:12:35 · 354 阅读 · 0 评论 -
利用Windows自带的功能当程序崩溃时产生崩溃转储文件(dmp)
何志丹以管理员身份 运行 :OpenDump.bat 其本质是写注册表。运行后: 任何程序崩溃都会在C:\CrashDump 产生dmp文件(比较大,约50到200M)。至少在Win7、Win10的电脑,Win10的平板上运行正确。OpenDump.bat@echo offecho 正在启用Dump...reg add "HKEY_LOCAL_M原创 2016-12-08 10:35:37 · 9298 阅读 · 0 评论 -
VS调试C#程序产生的dump
将二进制文件(exe、dll)、符号文件(pdb)、转储文件(dmp)放在同一个目录。如果可能的话,源码也要备份。有源码可以看到源文件的具体行,没源文件,只能定位到函数。二进制文件和符号文件必须备份,事后生成的没用,哪怕源码没改过。启动VS2013,以打开文件的方式打开转储文件, 点击右上的“混合调试” 附:1,此方式和调试C++程序产生的崩溃文件十分类似。2,昨天有个原创 2016-12-08 14:52:39 · 3503 阅读 · 0 评论 -
VS2005利用pdb加源码定位崩溃所在代码行
exe、dll pdb和 dump 放在同一目录。VS2005打开解决方案(项目)的方式打开dump文件,之后F5调试,会直接定位到崩溃处。利用调用堆栈可以看到函数调用关系。一般情况上会找不到源码,从snv下载对应版本的此文件(本例是dll1\a0.cpp) “查找源”对话框点了“取消”,如何重新关联源文件?1,在解决方案的属性中,清空“不查找这些源文件”2原创 2016-10-18 16:32:47 · 1162 阅读 · 0 评论 -
VC6和VC8(VS2005)生成map和cod文件
修改“汇编输出”想生成cod文件原创 2016-10-18 14:24:26 · 929 阅读 · 0 评论 -
启动(程序还没执行生成dump文件的代码)就崩溃的处理流程
上次崩溃,让大家手忙脚乱。所以列了一个启动(程序还没执行生成dump文件的代码)就崩溃的处理流程。1,用我写的opendll.exe加载所有dll。看是否能成功。此工具可以发现以下三种情况的崩溃:a, 全局变量的构造函数崩溃。b,dllmain中崩溃。c,Runtime Error。2,检查图像引擎是否兼容,如果有专门的检测工具最好。否则用dx和opengl的检查工具。原创 2016-11-04 15:12:51 · 1245 阅读 · 0 评论 -
利用任务管理器 转储文件创建转储文件
何志丹在任务管理器中选择此程序,右键菜单中选择“创建转储文件”,转储文件会放在临时目录(%temp%)原创 2016-12-08 11:35:35 · 10979 阅读 · 0 评论 -
利用WinDbg分析C#程序产生的转储文件
何志丹启动对应版本(X86,X64)的WinDbg,主菜单“File->Open Crash dump”打开崩溃转储文件。假定崩溃的程序是Eholly。依次执行以下4命令。ld Ehollysxe ld:clrjit.loadby sos clr!dumpstack 各命令的作用:第一行: 加载Eholly.pdb第二行第三行: 加载sos,否则解析不了托管原创 2016-12-08 14:57:22 · 1657 阅读 · 0 评论 -
VS2013、VS2005都是MD,跨dll使用stl的string崩溃问题
VS2013和VS2015的工程选项都设置成MD。VS2005编一个dll,有一个类CTest,有一个私有的std::string类型的成员变量。VS2013的exe 中CTest test 没有使用test。崩溃,原因:堆栈溢出。经查:VS2013中, sizeof(std::string) 24VS2005中,sizeof(std::string) 28故原因是:原创 2016-11-23 17:31:01 · 1314 阅读 · 0 评论 -
工具(bat)就是比手工好
win10 平板,程序崩溃(程序生产dmp的代码暂未增加)手工配置 生产dmp(崩溃转储文件)未果,用小陆给我的bat,一下就设置成功。比较发现: 手工配置时,:用了中文的。bat也比手工快。原创 2016-11-22 11:28:56 · 466 阅读 · 0 评论 -
一个非常简单的函数为什么会崩溃
软件崩溃, 利用dump和 map+cod两种方式都定位到同一个简单的函数bool CXX::IsXX(){return m_bXX;}m_bXX是一个bool变量。最后分析,其原因是:this指针非法。原创 2016-10-19 11:33:22 · 482 阅读 · 0 评论 -
BCG菜单按钮的简单使用
一,新建一个BCG工程CBCGPMenuButton,基于对话框。二,增加一个按钮,并关联一个CButton类型的变量m_btn1,然后手动将类型改CBCGPMenuButton成。三,为这个按钮增加响应事件。void CCBCGPMenuButtonDlg::OnButton1() {AfxMessageBox("士农学会!");}四,F5运行,鼠标单击Btn1,原创 2014-10-07 12:41:53 · 3445 阅读 · 0 评论 -
树状控件的应用(选择出阵武将)
树状控件的应用 何志丹下面是树状控件的一些应用,由于是由于用于演示,所以结构并不合理.其效果如图所示..步骤如下: 1,Insert -> new class,插入一个新类CMyCtrl,基类为CTreeCtrl. 2,利用类向导为CMyTree添加WM_PANIT的响应函数.代码如下:原创 2003-11-13 00:00:00 · 3022 阅读 · 1 评论 -
根据”圆心角“求斜椭圆坐标
软件架构师何志丹根据“圆心角”弧度(函数会将圆心角转成离心角),获取斜椭圆上的点坐标。ptCenter,椭圆中心;a椭圆长轴长度;b,椭圆短轴长度;radian,点于椭圆长轴夹角的弧度;dChangZhouAngle,长轴弧度 CDou...原创 2018-08-01 20:22:12 · 3583 阅读 · 1 评论 -
墨家巡逻兵 源码
软件架构师何志丹 开源墨家巡逻兵的目的:a,演示我的库的用法。b,展示我的开发思想,不同的技能的人合作。mjxlb:源码vc: 生成的exe位置。SNCode:公共库的lib和头文件。开发工具:VS2010 C++...原创 2018-11-18 10:20:21 · 316 阅读 · 0 评论 -
如何将基于对话框的工程改成基于BCG的
一,stdafx.h 加入如下内容。BCGCBProInc.h间接导入了lib。 #include // BCGControlBar Pro#if _MSC_VER >= 1400#if defined _M_IX86#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Win原创 2014-10-07 15:00:48 · 2526 阅读 · 0 评论 -
十年前对敏捷开发的体会
翻到10年前的旧文,发出来。记录自己的成长。原创 2023-09-26 18:14:10 · 295 阅读 · 1 评论 -
如果我当上技术经理如何展开工作
软件架构师何志丹如果我当上技术经理如何展开工作... 11 总括... 11.1 引子... 21.2 技术经理(总监)的任务... 21.3 此职位和我高度匹配... 22 术语...原创 2019-01-07 08:53:03 · 2589 阅读 · 7 评论 -
如何响应BCG的属性列表(CBCGPPropList)改变的事件?
如何响应BCG的属性列表(CBCGPPropList)改变的事件? afx_msg LRESULT OnProChanged(WPARAM uProListID,LPARAM pPro);BEGIN_MESSAGE_MAP(CPlotSingleDlg, CAcUiDialog) ON_REGISTERED_MESSAGE(BCGM_PROPERTY_CHANGED, OnProC原创 2014-12-22 09:47:00 · 1947 阅读 · 0 评论 -
自己积累的类库说明
自己积累的类库和以前效力的公司无关。效力于武汉开目是7年前的事,用到的技能早忘记了。南方数码工作中积累了一些类库,但主要集中于大型数据库ARX,对我没价值。中山极点三维代码受保密系统监控,取不取来,只能通过记忆记住少量。广州顶丰开发语言是C#,我用C++。类库公开计划:先逐步完成演示用例和测试用例,并公开。逐步将原理整理成文档,并公开。暂不公开代码,原理和测试用例足够学习了。原创 2017-06-30 12:21:22 · 377 阅读 · 0 评论 -
BCG属性列表
一,新建一个BCG工程BCGPPropListSingle,基于对话框。二,CBCGPPropListSingleDlg增加变量。CBCGPPropList m_prop;三,CBCGPPropListSingleDlg::OnInitDialog初始化网格控件。m_prop.Create (WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDE原创 2014-10-07 12:31:14 · 1963 阅读 · 0 评论 -
判断若干个点是否前景的习题
假定P1、P2、P3、P4、P5、P6、P7、P8的值只能是1或0。1,请写一个表达式判断: P1、P2为1,P3、P4为0,P5、P6、P7、P8任意。2,以下表达式和条件组是否等价:if( P1 + P2 + P3 + P4 == 3 ){}以下4个条件是否有至少有一个成立:a,P1、P2、P3为1。b,P2、P3、P4为1。c,P1、P2、P4为1。d原创 2017-09-10 09:30:53 · 223 阅读 · 0 评论 -
网格控件群组的简单使用和颜色设置
源码下载:http://download.csdn.net/detail/he_zhidan/8010089原创 2014-10-07 20:38:20 · 1533 阅读 · 0 评论 -
多线程冲突
软件架构师何志丹冲突原因写CString的时候,可能内存不够,于是释放、重新分配内存。可能刚释放,没来来得及分配,就被挂起了,然后另外的线程访问此变量,就崩了。 测试说明Button18测试了,没有防冲突,程序崩溃。Button19,测试了有防...原创 2018-08-15 21:02:09 · 1246 阅读 · 0 评论 -
BCG方便使用类的优点
本文列出了一些使用方法和MFC几乎或完全相同的类的优点。一,工具栏用户通过点击工具栏右下角的菜单可以:1,删除工具栏的按钮。2,从菜单上增加按钮,增加地菜单项不需要有图标。二,CBCGPDockingControlBar自带关闭、隐藏。三,CBCGPFrameWnd移动DockBar停靠到上边、下边、左边、下边方便多了。四,按钮原创 2014-08-24 17:57:36 · 2524 阅读 · 0 评论 -
网格控件的简单实用
一,新建一个BCG工程CBCGPGridCtrlSingle,基于对话框。二,CCBCGPGridCtrlSingleDlg类定义变量。CBCGPGridCtrl m_grid;三,CCBCGPGridCtrlSingleDlg::OnInitDialog对网格控件进行初始化。CRect r(0,0,200,200);m_grid.Create(WS_CHILD, r, t原创 2014-10-07 12:37:49 · 2813 阅读 · 0 评论 -
BCG网格控件单独设置颜色
源码下载:http://download.csdn.net/detail/he_zhidan/8009531原创 2014-10-07 17:20:44 · 2352 阅读 · 0 评论 -
BCG介绍
VC界面库分两大类:一,Direct UI,优点:界面绚丽。二,MFC扩展库。优点:1,方便用户。2,减少开发成本。3,界面相对好看。BCG属于后者,非常是否适合优化办公软件界面。作者在2008年以前对BCG的介绍“BCGControlBar是一个基于MFC的扩展库,您可以通过完全的用户化操作构成一些类似于Microsoft Office 2000/XP/2003和Microsoft原创 2014-08-24 17:53:20 · 2537 阅读 · 0 评论 -
C++ 优缺点之我见
现在的趋势是多语言混成编程,故本文是针对混合编程。1,C++优势:1.1,性能优势。1.2,可进化性(可复用性),进化出本团队顺手的类库。2,C++小的优势或疑似优势:2.1,“万金油”。混合编程时代,“万金油”没价值。3,C++根本缺点:难学。新手被指针搞死,中手(约3年工作经验)被stl标准库和模板搞死,高手(约5年工作经验)被boost搞死。由于stl难懂,大原创 2017-09-19 09:28:07 · 14199 阅读 · 9 评论 -
BCG 本地化
HINSTANCE hCHS = ::LoadLibrary("BCGCBProResCHS.dll"); BCGCBProSetResourceHandle (hCHS);如果BCGCBProResCHS.dll不存在,则编译L.chs.不要忘记释放BCGCBProResCHS.dll原创 2015-07-04 21:35:01 · 1064 阅读 · 0 评论 -
Hilditch 细化(实现二)
此实现5个条件:1,,前景点。2,8邻域前景点2到6。3,8邻域联通区域1。4,2个像素宽的垂直条不完全被腐蚀掉。5,2个像素宽的水平条不完全被腐蚀掉。原创 2017-09-08 18:56:00 · 1858 阅读 · 0 评论 -
如果我当上技术经理如何展开工作(二)
术语、概念、假设 标准工时:假定有一个三年工作经验的人,1小时的能完成的工作量。主要用于衡量模块的粒度。 规划 不同阶段核心要素不同 项目管理核心三要素 项目管理核心三要素:时间、成本、质量三要素。三者是鱼和熊掌的关系,不可兼得。不同阶段,不同的侧重点不同。 竞争策略 基本竞争策略有三种:成本领先战略、差异化...原创 2019-01-08 14:59:47 · 614 阅读 · 0 评论 -
调用自己封装的库,实现位图的格式转换
软件架构师何志丹调用自己封装的库,实现位图的格式转换。选则菜单“文件->打开”命令,打开位图,目前支持单色位图、16色位图、256色位图、24位位图。可重复打开。选择菜单“文件->另存为”命令转换位图格式,24位位图,可以转换成16色位图、256色位图,单色位图、16色位图、256色位图转可以转换成24位位图。24位位图转换成16色位图、256色位图,采用8叉树生成调色原创 2017-06-30 12:32:03 · 425 阅读 · 0 评论 -
死锁
软件架构师何志丹 死锁的最常见情况相互等待。 业务说明对于简单的业务,可以规定一次只能锁定一个单元,但对于复杂业务,这种方法不可行。比如:金银互换,1金换10银。分4步:1,判断金币足够。 2,判断银币没到上限 3,金币减少。 4,银币增加。...原创 2018-11-22 08:48:59 · 1129 阅读 · 0 评论 -
CBCGPChartCtrl
一,新建一个BCG工程CBCGPChartCtrlSingle,基于对话框。二,在主对话框上增加一个文本框。不要用默认ID,并关联一个CStatic类型变量。手动将类型改成CBCGPCharCtrtlCBCGPChartCtrl m_chart;三,CCBCGPChartCtrlSingleDlg::OnInitDialog对m_chart进行初始化。CBCGPChartVisua原创 2014-08-25 20:47:22 · 4206 阅读 · 0 评论 -
BCG圆盘菜单
一,新建一个BCG工程BCGPRadialMenuSingle,基于对话框。二, 新建或找一个png图片,上面画几个图标。导入到工程。导入后类型为PNG资源ID为IDR_PNG1。三,利用类向导重写PreTranslateMessage。BOOL CBCGPRadialMenuSingleDlg::PreTranslateMessage(MSG* pMsg) {if (pMsg原创 2014-10-07 12:34:59 · 1525 阅读 · 0 评论 -
平均随机数的封装类
核心代码从C++抄的。改进了两点:a,种子初始化为time(null),此函数精确到秒。b,构造函数可以指定随机数的最大值。比如:生成0到10的随机数。c,范围从0x8ffff,扩充到0xFFFF。class CRand{public: CRand(unsigned short uMax=0xFFFF) { m_seed = ::time(NULL); m_原创 2017-09-20 11:21:33 · 554 阅读 · 0 评论