请问,为何在WATCH窗口中查看函数内部定义的局部变量时,不能看到变量的值(20分)

  • 主题发起人 主题发起人 小子
  • 开始时间 开始时间

小子

Unregistered / Unconfirmed
GUEST, unregistred user!
但是各种控件的属性可以看到
对于函数内部定义的局部变量,提示说Undeclared identifier
 
不会吧,把你的函数和watch贴上来
 
就是在函数内部定义的简单的局部变量i也不行,但是主程序定义的全局函数却可以看到其值
 
你要跟踪到函数内部才行的,方法是在函数内部设端点(在源代码左边的灰色条上单
击鼠标,或者是按f7(不是f8),重新试一下吧,没问题的,我刚才已经试过了。
 
好象不会出现这种情况,最多是 process ?? ??
也就是没运行到,或以后不再用了,就没有了。
 
我是跟踪到该函数的内部,用鼠标放到要看的变量的上面,无法看到该变量的值,用CTRL+F7,将该变量加入WATCH,提示Undeclared identifier
会不是是有设置上的原因?我用的是DLPHI5
 
可能是i给优化掉了吧,
把Project|Options里的Optimization选项去掉试试看
 
能在WATCH窗口中查看的局部变量必须是内存变量。当Project|Options里的Optimization选项被选中后,一些局部变量(多为循环变量)被优化成寄存器变量或被忽略,所以看不到。在Delphi的默认调用约定中,前三个参数放在寄存器中,也看不到。
 
能在WATCH窗口中查看的局部变量必须是内存变量。当Project|Options里的
Optimization选项被选中后,一些局部变量(多为循环变量)被优化成寄存器变量或
被忽略,所以看不到。在Delphi的默认调用约定中,前三个参数放在寄存器中,也看
不到。
 
那请问如何解决,如果想查看这些局部变量的话
小子关闭了优化也不行呀
 
贴出你的代码
 
procedure TForm1.FormPaint(Sender: TObject);
var
i,hei,wid:integer;
begin
hei:=screen.height;
wid:=screen.width;
for i:= 0 to 255 do
begin
canvas.Brush.Color :=((255-i)*256*256);
canvas.FillRect(Rect(0,i*hei div 255,wid,(i+1)*hei div 255));
end;

end;
这里的i,wid和hei都是没法查看的,但是form1.canvas.Brush.Color的值可以查看
 
我试了一下,可以查看这些局部变量。
你把Project|Options里的Debug information和Local Symbols选项
都选上,然后用Project|Build编译一下看还行不行。
再不行的话,把Project|Options|Debugging的选项都选上试试。

 
多谢!
搞定了
按GuXl说的
 
后退
顶部