阅读:1025回复:10
请问为什么我不能用softice设断点??
我在DpcFor_Irq()中有这么一段:
for(k=0;k<4;k++) { m_IoPortRange1.outb(0x00,Temp_Data.svalue[3-k]);//可以在这里设置断点 for(int l=0;l<1200000000;l++)//for delay。不可以在这里设置断点 { j=j+1; } m_IoPortRange1.outb(0x02,CPort[k]);//可以在这里设置断点 for(int m=0;m<1200000000;m++)//for delay。不可以在这里设置断点 { j=j+1; } m_IoPortRange1.outb(0x02,0x0d8);//可以在这里设置断点 for(int n=0;n<1200000000;n++)//for delay。不可以在这里设置断点 { j=j+1; } } 为什么不能在循环嵌套里设断点?? :( |
|
|
沙发#
发布于:2004-09-06 17:50
不可能,你用F3切换到C/ASM混合代码处,在相应的汇编指令处下断点。。。。。
|
|
|
板凳#
发布于:2004-09-06 18:10
我也出现了这种情况,那几行总是设不了断点
|
|
地板#
发布于:2004-09-07 08:46
我在DpcFor_Irq()中有这么一段: 还有一个问题,我想在DpcFor_Isr()函数里面用延迟函数,但是刚刚我看到KeDelayExecutionThread()函数的中断级别必须是<Dispatch_Level的,而DpcFor_Isr()的级别刚好是Dispatch_Level 那我应当用哪个延迟函数呢?应该怎么用?请大虾指教。谢谢 |
|
|
地下室#
发布于:2004-09-07 09:35
可能是setenv.bat的设置问题,给优化掉了
:checked rem set up an NT checked build environment set BUILD_ALT_DIR=chk set NTDBGFILES= set NTDEBUG=ntsd set NTDEBUGTYPE=both set MSC_OPTIMIZATION=/Od /Oi检查这里 |
|
5楼#
发布于:2004-09-07 10:13
可能是setenv.bat的设置问题,给优化掉了 大虾您好,就是您说的这么回事!!!!! 原来我的setenv.bat里面的set MSC_OPTIMIZATION=,后面什么也没有,我加入了 /Od /Oi就好用了!!可以加断点了。 对了,以前没有/Od /Oi的时候,那个嵌套在 for(int i=0;i<4;i++)循环里面的for循环(延迟作用)根本就没有起作用,好像是根本就没有运行就跳过去了,现在一切正常,谢谢 结论:如果set MSC_OPTIMIZATION=,后面什么参数也没有,那么驱动程序的for循环里面的for循环不起作用!! [编辑 - 9/7/04 by chencheng] |
|
|
6楼#
发布于:2004-09-07 10:31
结论不对,不是没有作用,而是在你这种情况下,编译器优化掉了
|
|
7楼#
发布于:2004-09-07 11:40
谢谢各位大侠的指导,让我受益匪浅
|
|
8楼#
发布于:2004-09-07 12:04
受益匪浅
|
|
|
9楼#
发布于:2004-09-07 12:07
不过只有在FREE版本才优化的。CHECKED的好象都保留该项目设置的。。。。。
|
|
|
10楼#
发布于:2004-09-07 12:53
有的2K DDK的setenv.bat文件的checked的设置确实不对,不知何故
|
|