请问我怎么一eclipsedebug问题就出现这种问题啊

后使用快捷导航没有帐号?
查看: 863|回复: 12
新人欢迎积分0 阅读权限50积分1109精华0UID9533314帖子金钱3420 威望0
Lv.5, 积分 1109, 距离下一级还需 1391 积分
UID9533314帖子威望0 多玩草26 草信仰力
请教高手,我在系统3.55k的时候,已经开启QA了,但我没有进入Debug Settings ,把System Update Debug设置为On。 这个是我自己刷机的,记得很清楚,但现在我已经是4.41自制了,请问这样还用刷回3.55重新来一遍吗?如果不设置On,有什么影响?请高手解惑!!!先谢谢了。
作者被禁止或删除 内容自动屏蔽
新人欢迎积分0 阅读权限0积分25474精华0UID帖子金钱300079 威望2
头像被屏蔽
UID帖子威望2 多玩草203 草信仰力
提示: 作者被禁止或删除 内容自动屏蔽
新人欢迎积分0 阅读权限80积分16375精华0UID9993454帖子金钱69067 威望0
Lv.8, 积分 16375, 距离下一级还需 3625 积分
UID9993454帖子威望0 多玩草21 草信仰力
发表自UC浏览器
不降级无所谓
新人欢迎积分0 阅读权限60积分4912精华0UID帖子金钱12057 威望0
Lv.6, 积分 4912, 距离下一级还需 88 积分
UID帖子威望0 多玩草0 草信仰力
新人欢迎积分0 阅读权限50积分1109精华0UID9533314帖子金钱3420 威望0
Lv.5, 积分 1109, 距离下一级还需 1391 积分
UID9533314帖子威望0 多玩草26 草信仰力
小小小楊 发表于
現在網路圖標上可開起
我没明白请小杨给多解释下好吗?
永久禁止访问
新人欢迎积分0 阅读权限0积分12202精华0UID8165880帖子金钱64592 威望4
头像被屏蔽
永久禁止访问
UID8165880帖子威望4 多玩草228 草信仰力
提示: 作者被禁止或删除 内容自动屏蔽
新人欢迎积分0 阅读权限60积分3787精华0UID帖子金钱21356 威望0
夜晚里的佼佼者
Lv.6, 积分 3787, 距离下一级还需 1213 积分
UID帖子威望0 多玩草0 草信仰力
<font color="#8363087 发表于
我没明白请小杨给多解释下好吗?
就是说你现在按L123R123+下可以开启 ,你的头像是出自哪啊?
新人欢迎积分0 阅读权限80积分10383精华0UID2370837帖子金钱10789 威望0
灌水进行曲
Lv.8, 积分 10383, 距离下一级还需 9617 积分
UID2370837帖子威望0 多玩草110 草信仰力
发表自UC浏览器
没关系的,off的情况下我降过三次。
禁止不访问
新人欢迎积分1 阅读权限70积分5894精华0UID帖子金钱12780 威望0
禁止不发言
Lv.7, 积分 5894, 距离下一级还需 4106 积分
UID帖子威望0 多玩草100 草信仰力
<font color="#8363087 发表于
我没明白请小杨给多解释下好吗?
4.41已经自带QA软件,所以照密技把QA招唤出来吧.
滚滚长江东逝水,浪花淘尽英雄;是非成败转头空,青山依旧在、几度夕阳红。
白发渔樵江渚上,惯看秋月春风;一壶浊酒喜相逢,古今多少事、都付笑谈中。
禁止不访问
新人欢迎积分1 阅读权限70积分5894精华0UID帖子金钱12780 威望0
禁止不发言
Lv.7, 积分 5894, 距离下一级还需 4106 积分
UID帖子威望0 多玩草100 草信仰力
这里有教学:
滚滚长江东逝水,浪花淘尽英雄;是非成败转头空,青山依旧在、几度夕阳红。
白发渔樵江渚上,惯看秋月春风;一壶浊酒喜相逢,古今多少事、都付笑谈中。
感觉不会在爱了
新人欢迎积分1 阅读权限99积分52692精华0UID帖子金钱126719 威望14
人类为何要互相伤害
Lv.10, 积分 52692, 距离下一级还需 2308 积分
UID帖子威望14 多玩草338 草信仰力
不开也没事要开在会去开
如果NDS机能不是那么贫瘠,MH系列是否会出现在NDS上而不是PSP,MH系列在PSP掌机上大红大紫只是人算不如天算的结果。
新人欢迎积分0 阅读权限80积分14972精华0UID8483051帖子金钱33334 威望0
Lv.8, 积分 14972, 距离下一级还需 5028 积分
UID8483051帖子威望0 多玩草10 草信仰力
去PS3设置那里的网络设定(不要进入),同时按住手柄的L1+L2+L3+R1+R2+十字键的下,
会出来3个选项:EdyViewer、Debug Settings和Install Package Files。进入Debug Settings ,把System Update Debug设置为On。
新人欢迎积分0 阅读权限70积分9068精华0UID6720834帖子金钱3388 威望0
Lv.7, 积分 9068, 距离下一级还需 932 积分
UID6720834帖子威望0 多玩草10 草信仰力
不降级无所谓
马年新春勋章
手机APP马年迎春,马上有钱!
元宝专属一阶勋章。已绝版
爱情守望者
爱情守望者
节日守望者
节日守望者
初级灌水标兵
初级灌水标兵
元宝专属二阶勋章。已绝版
初级在线标兵
论坛在线时间达1000小时即可申请
手机论坛勋章
APP发帖双倍积分,登陆即送勋章!
需要金钱:1100
Powered by
手机盒子客户端点击或扫描下载&p&回想起这个bug,仍然让我有些痛苦。作为一个程序员,在发现bug时,你学会了首先在自己代码中找问题,或许在测试一万次之后,你会把问题归咎于编译器。只有在这所有的都不起作用之后,你才会把问题归咎于硬件。&/p&&p&这是我遭遇一个硬件bug的故事。&/p&&p&抛开别的不说,我曾为《&a href=&///?target=http%3A///Crash-Bandicoot-series& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Crash Bandicoot&i class=&icon-external&&&/i&&/a&》写存储卡(读写)代码。对于一个自大的游戏程序员,这就像是在公园里散步一样轻松愉快,我认为只要几天就写完了。我中止调试六个礼拜。在此期间我做一些其他的事情,但我一直回来处理这个bug——几天内每天几个小时。这个bug实在烦人。&/p&&p&这个bug的症状是,当你需要保存你的进度时,代码会访问存储卡,而大部分情况下没有什么问题…但是偶尔读写会超时…没有任何明显的原因。一个短小的写入经常毁掉存储卡。玩家要保存进度,我们不仅不保存,还擦除他们存储卡上的全部东西。天哪。&/p&&p&过了一段时间,我们在Sony的制作人Connie Booth慌了。我们显然不能带着这个bug发布游戏,而六个星期之后我对于问题出在哪一点线索都没有。通过Connie我们向其他 PS1 开发者求助:有没有人出现过像我们这样的情况?没有。绝对没有任何人在存储卡系统上出现任何问题。&/p&&p&在你绞尽脑汁之后,你能做的唯一一个调试方法就是分而治之:一点点去除程序中的代码,直到留下的代码很少但你仍然出问题。像木雕一样去除没有问题的代码,留下的就是你的bug所在。&/p&&p&在这样的背景下挑战在于,视频游戏是很难去除某一部分的。在你删除模拟重力或者显示字符的代码后,如何运行游戏?&/p&&p&你必须做的是用一个假装做真正的事情,但实际上只是做很简单的不会出现bug事情的东西来替换掉整个模块。你必须写新的支撑代码来让这些玩意正常工作。这是一个缓慢而痛苦的过程。&/p&&p&长话短说:我做完了。我移除了大片大片的代码,相当多,只留下了初始化代码——就是准备游戏运行系统,初始化底层硬件等等。当然,我不能显示加载/保存菜单,因为我截除了所有的图像代码。但是我能够假装用户使用(不可见的)加载/保存屏幕并且请求保存,然后写入卡中。&/p&&p&我最终以一个带有这个bug的很少量的代码结束——但问题仍然随机出现!在大多数情况下没啥问题,但是偶尔会失效。基本上所有的Crash的实际代码都被移除了,但还是这样。这实在是莫名其妙:留下来的代码基本上都没做什么事。&/p&&p&在那时——估计是凌晨3点——一个想法蹦了出来。读写(I/O)涉及精确定时。无论是硬盘、存储卡、蓝牙发送器——随便啥——做读写的底层代码都是根据时钟来的。&/p&&p&时钟让不直接连接到CPU的硬件设备和cpu运行的代码同步。时钟决定了&a href=&///?target=http%3A//en.wikipedia.org/wiki/Baud& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&波特率&i class=&icon-external&&&/i&&/a&——数据从一头传到另一头的速率。如果计时有什么问题,硬件或者软件或者两者都会乱七八糟的。这真的,真的很糟糕,并且通常导致数据损坏。&/p&&p&如果我们的初始化代码以某种方式弄乱了计时会怎么样?我又看了一遍测试程序中和计时有关的代码,并注意到我们将PS1上的可编程计时器设置到了1kHz(1000跳每秒)。这是比较快了,当PS1启动的时候,默认状态大概是100Hz。因此,大多数游戏将他们的计时器设置为100Hz。&/p&&p&这个游戏的带头(和除我外的唯一)开发者Andy,将计时器设置为1kHz,使得Crash的动作计算更加准确。Andy喜欢矫枉过正,如果我们要模拟重力,我们应该尽可能的提高精度!&/p&&p&然而如果提高计时器频率莫名其妙的干扰了整个程序的计时,故而将这个计时器设置到存储卡的波特率上会怎样呢?&/p&&p&我将计时器代码注释掉。然后我就无法复原这个bug了。但是这并不表示bug被修复了,这个问题是随机发生的。万一我只是运气好呢?&/p&&p&几天过去了,我还是在玩我的测试程序。Bug没有再出现。我回到全部的Crash代码中,修改了加载/保存代码,在访问存储卡之前将可编程计时器重置为默认设置(100Hz),之后设置回1kHz。从此之后没有发现问题再次出现。&/p&&p&但是…为什么?&/p&&p&我重新回到测试程序上,试着检测当计时器设置为1kHz时出现的那些错误的模式。终于,我注意到这些错误出现在使用PS1手柄的人身上。因为我自己很少这样做,所以我没有注意到(为啥我要在测试加载/保存代码的时候用手柄)。但是有一天我们的美工等我去完成测试(我确定那时候我在爆粗口),而他紧张的摆弄着手柄。卡损坏了。“等下,怎么回事?喂,再来一次!”&/p&&p&一旦我发现了这两件事是联系着的,就很容易重现bug:开始写入存储卡,动一下手柄,存储卡损坏。在我看来完全是硬件bug。&/p&&p&我去找Connie告诉他我的发现。她转述给设计过PS1的硬件工程师。她被告知:“不可能,这不可能是硬件问题。”我跟她说问一下我能不能直接和他说。&/p&&p&那个工程师给我打电话了,他用着他的烂英语,我用着我更烂的日语,我们争论一会。我最后说:“我给你一个30行的测试程序,让你在动手柄的时候能够出现这问题。”他答应了。他向我保证,这是浪费时间,而他正在一个新项目上很忙,但因为我们是Sony很重要的开发者,他会试的。&/p&&p&第二天晚上(我们在洛杉矶,而他在东京,所以对于我来说是晚上而他是到了第二天),他给我打电话,不好意思的向我道歉。这是个硬件问题。&/p&&p&我还是没有完全搞清楚问题到底在哪,但是我的印象中,从Sony总部的反馈听到的是,如果将可编程计时器设置到足够高的时钟频率,会影响到主板上时钟晶振附近的一些东西。这些东西之一就是存储卡的波特率控制器,同时也设置手柄的波特率。我不是搞硬件的,所以对于细节我相当模糊。&/p&&p&但是主旨是主板上两个独立部分的串扰,以及手柄接口和存储卡接口数据发送的结合在1kHz的时钟频率下会导致丢位,从而数据丢失,以致卡损坏。&/p&&p&这是我全部编程生涯中,唯一一次因为量子力学debug的问题。&/p&&p&原文链接: &a href=&///?target=http%3A///Programming-Interviews/Whats-the-hardest-bug-youve-debugged/answer/Dave-Baggett& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Dave Baggett&i class=&icon-external&&&/i&&/a&
翻译: &a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&伯乐在线 &i class=&icon-external&&&/i&&/a&- &a href=&///?target=http%3A///author/cugbabyebar/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CuGBabyBeaR&i class=&icon-external&&&/i&&/a&&br&译文链接: &a href=&///?target=http%3A///50995/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员,你调试过的最难的 Bug 是?&i class=&icon-external&&&/i&&/a&&br&&/p&&br&&p&我并没有看懂哪儿是量子力学。。&/p&
回想起这个bug,仍然让我有些痛苦。作为一个程序员,在发现bug时,你学会了首先在自己代码中找问题,或许在测试一万次之后,你会把问题归咎于编译器。只有在这所有的都不起作用之后,你才会把问题归咎于硬件。这是我遭遇一个硬件bug的故事。抛开别的不说,我曾为《》写存储卡(读写)代码。对于一个自大的游戏程序员,这就像是在公园里散步一样轻松愉快,我认为只要几天就写完了。我中止调试六个礼拜。在此期间我做一些其他的事情,但我一直回来处理这个bug——几天内每天几个小时。这个bug实在烦人。这个bug的症状是,当你需要保存你的进度时,代码会访问存储卡,而大部分情况下没有什么问题…但是偶尔读写会超时…没有任何明显的原因。一个短小的写入经常毁掉存储卡。玩家要保存进度,我们不仅不保存,还擦除他们存储卡上的全部东西。天哪。过了一段时间,我们在Sony的制作人Connie Booth慌了。我们显然不能带着这个bug发布游戏,而六个星期之后我对于问题出在哪一点线索都没有。通过Connie我们向其他 PS1 开发者求助:有没有人出现过像我们这样的情况?没有。绝对没有任何人在存储卡系统上出现任何问题。在你绞尽脑汁之后,你能做的唯一一个调试方法就是分而治之:一点点去除程序中的代码,直到留下的代码很少但你仍然出问题。像木雕一样去除没有问题的代码,留下的就是你的bug所在。在这样的背景下挑战在于,视频游戏是很难去除某一部分的。在你删除模拟重力或者显示字符的代码后,如何运行游戏?你必须做的是用一个假装做真正的事情,但实际上只是做很简单的不会出现bug事情的东西来替换掉整个模块。你必须写新的支撑代码来让这些玩意正常工作。这是一个缓慢而痛苦的过程。长话短说:我做完了。我移除了大片大片的代码,相当多,只留下了初始化代码——就是准备游戏运行系统,初始化底层硬件等等。当然,我不能显示加载/保存菜单,因为我截除了所有的图像代码。但是我能够假装用户使用(不可见的)加载/保存屏幕并且请求保存,然后写入卡中。我最终以一个带有这个bug的很少量的代码结束——但问题仍然随机出现!在大多数情况下没啥问题,但是偶尔会失效。基本上所有的Crash的实际代码都被移除了,但还是这样。这实在是莫名其妙:留下来的代码基…
是这个道理,程序调试最麻烦的问题就是和硬件相关的问题,我曾经用过一个模块,说明书说3-3.6V都能工作,但我最后证明,3.3V以下能工作,3.4V以上就不行,这问题困扰了我一周,一切程序调试,只要涉及到硬件,就麻烦重重,而硬件问题中最头疼的,就是电磁兼容导致的问题,电磁场与波导致的相互干扰,基本上无法分析,而只能各种试行不行。
根本没量子力学啥事情,就是上层程序员不懂硬件导致无法debug&br&PS:&a data-hash=&8e3c38e591e1e42d3d6cc225b6af9e2c& href=&///people/8e3c38e591e1e42d3d6cc225b6af9e2c& class=&member_mention& data-tip=&p$b$8e3c38e591e1e42d3d6cc225b6af9e2c&&@朴三世&/a& ,题主的问题在于,对于这些看似不确定性的现象,实际上已经有了确定性的解释了,只不过该程序员不知道而已;而量子力学的不确定性则是现有的最精确的理论描述了
根本没量子力学啥事情,就是上层程序员不懂硬件导致无法debugPS: ,题主的问题在于,对于这些看似不确定性的现象,实际上已经有了确定性的解释了,只不过该程序员不知道而已;而量子力学的不确定性则是现有的最精确的理论描述了
这位程序员其实就跟知乎上某些喜欢跨行扯淡的人差不多,洋洋洒洒写了一大通东西,以为自己了不得的观点和发现,其实就是另一行普通得不能再常见浅显的事。&br&&br&---&br&&br&他大学时如果选过EE方面的课可能就不会那么折腾了。
这位程序员其实就跟知乎上某些喜欢跨行扯淡的人差不多,洋洋洒洒写了一大通东西,以为自己了不得的观点和发现,其实就是另一行普通得不能再常见浅显的事。---他大学时如果选过EE方面的课可能就不会那么折腾了。
已有帐号?
无法登录?
社交帐号登录14:15 提问
vs2013C语言问题 debug出现debug assertion failed怎么解决?
刚学没几天,指针什么的都还不怎么会用,然后写了个小游戏,里面用到指针来的,运行也成功了,但是debug里的那个exe文件打开不了,会出现debug assertion failed.我觉得应该是我代码写的有问题?指针没有用好?
void read_board(int board[7][8]){
fptr = fopen("map.txt", "r");
if (fptr == NULL){
printf("error");
for (i = 0; i & 7; i++){
for (j = 0; j & 8; j++){
fscanf(fptr, "%d", &board[i][j]);
fclose(fptr);
void print_board(int board[7][8], int B[7][8]) {
0 1 2 3 4 5 6 7\n");
for (i = 0; i & 7; i++){
printf("%d ", i);
for (j = 0; j & 8; j++){
if (B[i][j] == 1){
if (board[i][j] == 0)
printf("a ");
if (board[i][j] == 1)
printf("b ");
if (board[i][j] == 2)
printf("c ");
else if (B[i][j] == 0)
printf(". ");
printf("\n");
printf("\n");
int ask_for_command(void){
scanf("%d", &command);
while (command != 1 && command != 2) {
printf("Command should be 1 or 2. Try again.\n");
scanf("%d", &command);
void select_cell(int board[7][8], int B[7][8], int *r, int *c){
printf("Row [0-6]?\n");
scanf("%d", &*r);
while (*r & 0 || *r&6){
printf("Invalid row input. Try again.\n");
printf("Row [0-6]?\n");
scanf("%d", &*r);
printf("Column [0-7]?\n");
scanf("%d", &*c);
while (*c & 0 || *c&7){
printf("Invalid column input. Try again.\n");
printf("Column [0-7]?\n");
scanf("%d", &*c);
while (B[*r][*c] == 0){
printf("Invalid location: (%d,%d) is empty. Try again.\n", *r, *c);
select_cell(board, B, r, c);
judge = 0;
if (*r != 0)
if (board[*r - 1][*c] == board[*r][*c] && B[*r][*c] == 1)
judge = 1;
if (*r != 6)
if (board[*r + 1][*c] == board[*r][*c] && B[*r][*c] == 1)
judge = 1;
if (*c != 0)
if (board[*r][*c] == board[*r][*c - 1] && B[*r][*c] == 1)
judge = 1;
if (*c != 7)
if (board[*r][*c] == board[*r][*c + 1] && B[*r][*c] == 1)
judge = 1;
if (judge == 0)
B[*r][*c] = -1;
while (B[*r][*c] == -1){
printf("Invalid location: (%d,%d) has no neighbor. Try again.\n", *r, *c);
select_cell(board, B, r, c);
void cell_removal(int board[][8], int B[][8], int x, int y) {
if (x &= 1){
if (board[x][y] == board[x - 1][y] && B[x - 1][y] == 1){
B[x - 1][y] = 0;
cell_removal(board, B, x - 1, y);
if (x &= 5){
if (board[x][y] == board[x + 1][y] && B[x + 1][y] == 1){
B[x + 1][y] = 0;
cell_removal(board, B, x + 1, y);
if (y &= 1){
if (board[x][y] == board[x][y - 1] && B[x][y - 1] == 1){
B[x][y - 1] = 0;
cell_removal(board, B, x, y - 1);
if (y &= 6){
if (board[x][y] == board[x][y + 1] && B[x][y + 1] == 1){
B[x][y + 1] = 0;
cell_removal(board, B, x, y + 1);
void pull_down(int board[7][8], int B[7][8]){
for (j = 0; j & 8; j++){
for (i = 6; i &= 0; i--)
if (board[i][j] == 0 && B[i][j] == 1){
board[d][j] = board[i][j];
B[d][j] = 1;
if (board[i][j] == 1 && B[i][j] == 1)
board[d][j] = board[i][j];
B[d][j] = 1;
if (board[i][j] == 2 && B[i][j] == 1)
board[d][j] = board[i][j];
B[d][j] = 1;
for (i = 0; i &= i++){
B[i][j] = 0;
void pull_left(int board[7][8], int B[7][8]){
int i, j, judge[8];
for (j = 0; j & 8; j++){
judge[j] = 1;
for (j = 0; j & 8; j++){
int a = 0;
for (i = 0; i & 7; i++){
if (B[i][j] == 1)
if (a == 1)
judge[j] = 1;
else if (a == 0)
judge[j] = 0;
}//to mark those empty columns
int d = 0;
for (j = 0; j & 8; j++){
if (judge[j] == 1){
for (i = 0; i & 7; i++){
board[i][d] = board[i][j];
B[i][d] = B[i][j];
for (j = j & 8; j++){
for (i = 0; i & 7; i++){
B[i][j] = 0;
int gameover(int board[7][8], int B[7][8]){
int mark = 0, i, j, A[56], r, c,
for (i = 0; i & 56; i++){
for (i = 0; i & 7; i++){
for (j = 0; j & 8; j++){
if (B[i][j] != 0){
A[8*i+j] = 1;
if (mark == 0)
else if (mark == 1){
int judge = 0;
for (i = 0; i & 56; i++){
if (A[i] == 1)
r = i / 8; c = i % 8;
if (r != 0)
if (board[r - 1][c] == board[r][c] && B[r-1][c] == 1)
judge = 1;
if (r != 6)
if (board[r + 1][c] == board[r][c] && B[r+1][c] == 1)
judge = 1;
if (c != 0)
if (board[r][c] == board[r][c - 1] && B[r][c-1] == 1)
judge = 1;
if (c != 7)
if (board[r][c] == board[r][c + 1] && B[r][c+1] == 1)
judge = 1;
if (judge == 0)
int main(void){
int board[7][8], B[7][8], i, j,
int command = -1;
for (i = 0; i & 7; i++){
for (j = 0; j & 8; j++)
B[i][j] = 1;
}//set all B elements as 1 (not empty)
read_board(board);
while (1) {
print_board(board, B);
printf("1. Play / 2. Quit [1-2]?\n");
command = ask_for_command();
if (command == 2)
//the program ends
if (command == 1){
int *row = &r, *col = &c;
select_cell(board, B, row, col);
B[r][c] = 0;
cell_removal(board, B, r, c);
pull_down(board, B);
pull_left(board, B);
end=gameover(board,B);
if (end == 0){
printf("You win\n");
if (end == 1){
printf("You lose\n");
按赞数排序
我尝试了一下你可以用GCC去运行,好像是正确的。我没有VC2013编译器,用VC6.0出现和你同样的错误,你按下面方法看看:"Project"-&"setting"-&"点击c/c++"-&"Category选项中选择Preprocessor"-&"在Undefined symbols:填写_DEBUG" 重新编译运行。
21关注|55收录
248关注|2190收录
385关注|312收录
其他相似问题
相关参考资料为什么我的程序debug版本运行没有问题,而release版本总是报错_百度知道
为什么我的程序debug版本运行没有问题,而release版本总是报错
版中它有可能掩盖一个数组越界;Gm
打开最小化重链接开关;GF
合并重复的字符串,此时数组越界会破坏栈中有用的数据,就不行了;
(AFX_MSG_CALL
CWnd。下面列出了分别针对二者的选项(当然除此之外还有其他一些;ZI
continue(编辑继续)数据库,并且不作任何优化。
的真正秘密:优化程序会根据变量的使用情况优化变量,不会造成
版错误。如果你的程序是多线程的;倒是由于
加强了对错误的检测,打开编译调试代码开关(主要针对
assert函数)
&#47,它包含调试信息。
顺便值得一提的是
宏,以便用户很好地使用,把下列代码加到
stdafx,而寄存器中的值没变;
booleanExpression
j、能改变变量值的函数调用
二,则很可能遇到这样的问题,在此不讨论)
booleanExpression
使用发布版本的运行时刻函数库
&#47:。把你认为可疑的变量加上
&quot,因为这些宏都已在上面列出;O2
优化开关,便于程序员调试程序,从而造成错误,优化会省略
栈基址指针。编译器提供的
通常很稳定,如果没有发生数组越界之类的错误(或是越界“不多”),查找的方法也很简单;D
&quot。例如一;
关闭条件编译调试代码开关(即不编译assert函数)
ASSERT_VALID(
Lafxwin,例如下标是变量
1、指针错误等,编译器只是按照预定的选项行动,栈的访问通过
寄存器保存的地址实现,这样通过一个全局指针访问栈就会造成返回地址错误是程序崩溃,函数通常能正常执行,
0,只要利用
功能在工程所有文件中找到用这些宏的地方再一一检查即可。除此之外,如果
有错、其他进程和线程);
ATLASSERT(
booleanExpression
),如堆内存分配,如&#47、参数)以及自动变量都是放在栈中的;Oy-
编译选项来关掉帧指针省略,以确定是否此类错误,而其他进程只能对该变量所在的内存进行修改;
_DEBUG,我们再来逐个对照这些选项看看
版错误是怎样产生的
1,并将字符串常量放到只读内存,防止
实际上,函数原形错误时编译会报错
ON_MESSAGE
ON_MESSAGE(message。这类错误主要有以下几种,不能使程序代码和调试代码完全分离;
虽然在数组越界时已出了作用域,assert()
函数会被编译。防止这种错误的方法之一是重定义
ON_MESSAGE
宏;Fo。唯一的例外是
,他们只是一组编译选项的集合,所有调用信息(返回地址;
memberFxn)
&#47,专家们建议尽量少用这个宏,
变量优化;Od
关闭优化开关
assert(int
expression
可以帮助捕获内存错误
&#47:*)(WPARAM;
ON_MESSAGE
宏包含强制类型转换,但如果用了强制类型转换,而不只是布尔表达式(例如赋值。此类错误通常有:volatile
告诉编译器该变量可能被程序之外的未知方式修改(如系统,VC++中还有一系列断言宏,从而使栈被破坏。Release
称为发布版本:链接哪种运行时刻函数库通常只对程序的性能产生影响。因此,它往往是进行了各种优化。有些人可能为这个原因而滥用
。这种错误有时会表现为程序在最快优化出错而最小优化正常,函数中有一个未被使用的变量.
。另外,那么
版都不会执行这些操作,而在
版中,这些宏都是调用了
函数,但其空间并未收回,减少链接时间
非法访问,最终可能会带来很多麻烦,有时会出现
正常的现象。与此有关的错误有:
消息响应函数书写错误、Debug
编译方式的本质区别
通常称为调试版本.h
中(在#include
&quot,通常他们也不会引起
版错误,因为
违反了断言的思想,使程序最小或最快
&#47,常把一些变量放在寄存器中(类似于
关键字)。
3。若函数的声明与实现不同(参数,
AfxSig_lwl。调试版本的
包含了调试信息。这包括;
ASSERT_KINDOF(
classname:在函数调用过程中,在于一组编译选项:当定义了
版中被忽略。
2,并采用了一些保护机制以帮助发现错误。例如
的强类型特性能检查出大多数这样的错误,只不过可能是
版的某次运行没有表现出来而已,也要注意一下;O1
时不被编译,这个宏允许你将程序代码放在布尔表达式里;_DEBUG&Fd
&#47。事实上。优化程序为了使程序性能提高,从而得到优化过的调试版本或是带跟踪语句的发布版本。事实上,因而
就会掩盖越界,程序肯定是有
的。你可以在
版本中强制加入
&#47,我们甚至可以修改这些选项,
型变量,但区别并不重要。
所有这些断言都只在
Debug版中才被编译,
&#47,TRACE()
宏的编译也受
控制;&#47,有些高手可能还会加入
之类的条件编译,事实上这是危险的、哪些情况下
有了上面的介绍;当然错误不会这么明显;MLd
(&memberFxn)
0、返回值,这个变量很可能被优化调,而打开优化后编译器会作出一系列假设,或者你发现某个变量的值与预期的不符而你确信已正确的设置了:这是造成错误的主要原因。如果你在这些宏中加入了任何程序代码;MTd
library(调试版本的运行时刻函数库)
&#47,Debug
并没有本质的界限、j
并未其很大作用可能会被优化掉.h&quot、调用方式),这样在调试过
程中如果修改了源代码不需重新编译
/&#47,只不过附加了一些与库有关的调试代码,就会产生错误————但
方式下;NDEBUG&quot。当然;
booleanExpression
),包括数组越界,
(AFX_PMSG)(AFX_PMSGW)(static_cast&lt,因此性能不如发布版本;之后);
booleanExpression
)。应当指出的是,
优化。正确的应为
OnMessageOwn(WPARAM
wparam,因为关闭优化时源程序基本上是直接翻译的,使得程序在代码大小和运行速度上都是最优的。这个宏通常用来检查
的返回值。初学者很容易犯这类错误;
1,实际的情况会比这复杂得多;Release
帧指针(Frame
Pointer)省略(简称
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 桌面上出现debug 的文章

 

随机推荐