作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的——那就是,程序发生了崩溃! “该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机器上运行得好好的,但是到了别人的机器上就崩溃了;有时自己在编写和测试的过程中就莫名其妙地遇到了非法操作,但是却无法确定到底是源代码中的哪行引起的……是不是很痛苦呢?不要紧,本文可以帮助你走出这种困境,甚至你从此之后可以自豪地要求用户把崩溃地址告诉你,然后你就可以精确地定位到源代码中出错的那行了。(很神奇吧?呵呵。) 首先我必须强调的是,本 *** 可以在目前市面上任意一款编译器上面使用。但是我只熟悉 M$ 的 VC 和 MA *** ,因此后面的部分只介绍如何在这两个编译器中实现,请读者自行融会贯通,掌握在别的编译器上使用的 *** 。 Well,废话说完了,让我们开始! :) 首先必须生成程序的 MAP 文件。什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示 *** ,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。 好吧,既然 MAP 文件如此神奇,那么我们应该如何生成它呢?在 VC 中,我们可以按下 Alt+F7 ,打开“Project Settings”选项页,选择 C/C++ 选项卡,并在最下面的 Project Options 里面输入:/Zd ,然后要选择 Link 选项卡,在最下面的 Project Options 里面输入: /mapinfo:lines 和 /map:PROJECT_NAME.map 。最后按下 F7 来编译生成 EXE 可执行文件和 MAP 文件。 在 MA *** 中,我们要设置编译和连接参数,我通常是这样做的: rc %1.rc ml /c /coff /Zd %1.a *** link /subsystem:windows /mapinfo:exports /mapinfo:lines /map:%1.map %1.obj %1.res 把它保存成 makem.bat ,就可以在命令行输入 makem filename 来编译生成 EXE 可执行文件和 MAP 文件了。 在此我先解释一下加入的参数的含义: /Zd 表示在编译的时候生成行信息 /map[:filename] 表示生成 MAP 文件的路径和文件名 /mapinfo:lines 表示生成 MAP 文件时,加入行信息 /mapinfo:exports 表示生成 MAP 文件时,加入 exported functions (如果生成的是 DLL 文件,这个选项就要加上) OK,通过上面的步骤,我们已经得到了 MAP 文件,那么我们该如何利用它呢?
关于春节祝福的四字成语有:1、家肥屋润:家庭和睦有礼且富有。2、余钱多多:就是钱好多的意思。3、财源滚滚:钱财, 恭贺新禧吉星高照恭喜发财多福多寿财运亨通健康长寿鲤鱼跃龙门开春喜临门开春福临门开春大...
表格制作好了,需要根据某些内容进行排序,可以把数据按一定顺序分类,方便查看。今天小编分享几种排序的操作方法,总有一种方法适合你。 一、按数值大小排序 这应该是排序中最常见的一种操作吧,比如...
这儿用"机构"这个词,是由于DDoS并不像侵入一台服务器那样简单。一般来说,黑客开展DDoS攻击的时候会历经那样的流程: 1. 收集掌握总体目标的状况 下述状况是黑客十分关注的资源: 被攻击总体...
我是专业影投人许老师,如果你对《长津湖》电影投资感兴趣想了解具体投资流程参与价值或者有人给你推荐的电影拿不定主意,不妨听听专业人士的分析,免费咨询:15266271019,让你的投资多一份保障,...
2020年9月21日,昆明市盘龙区人民法院依法对被告人罗秉乾过失致人死亡罪、附带民事诉讼原告人陈美莲提起的附带民事诉讼案进行一审公开宣判,以过失致人死亡罪判处被告人罗秉乾有期徒刑一年六个月,判令罗秉乾...
开一家廖记凉菜赚钱吗?此刻市场上说什么凉菜店钱,最有资格措辞的就是廖记凉菜,廖记凉菜自从开业以来就备受各界人士存眷,上了各大电视节目,今朝在全国已有多家加盟店,每家加盟店守旧预计月入都是2万元的纯...