GVKun编程网logo

如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?

9

在本文中,我们将详细介绍如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?的各个方面,同时,我们也将为您带来关于CX0069:错误:变量需要堆栈帧?、Delphi7:如何在调用堆栈中看到局部变量的

在本文中,我们将详细介绍如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?的各个方面,同时,我们也将为您带来关于CX0069:错误:变量需要堆栈帧?、Delphi 7:如何在调用堆栈中看到局部变量的值?、delphi – (How)我可以在断点上导出调用堆栈吗?、delphi – 什么是安全的最大堆栈大小或如何衡量堆栈的使用?的有用知识。

本文目录一览:

如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?

如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?

在Delphi调用堆栈中,是否可以隐藏/折叠没有源代码的堆栈帧,相应地,没有用这些蓝点标记?

仅供参考,Visual Studio可以执行此操作:

In managed code,by default. the Call Stack window hides information for non-user code. The following notation appears instead of the hidden information:

[< External Code>]

http://msdn.microsoft.com/en-us/library/a3694ts5.aspx

如果解决方案适用于Delphi XE2,那将会很好.

UPDATE

它可以是一些第三方专家,甚至是使用ToolsAPI的代码

解决方法

据我所知,Delphi IDE与您描述的VS功能完全不同.

CX0069:错误:变量需要堆栈帧?

CX0069:错误:变量需要堆栈帧?

这段来自《C语言深度剖析》关于指针的部分

#include <stdio.h>
int main()
{
   // int i=10;
    int *p=(int *)0x00bef95c;//0x00be95c是变量i的地址
    *p=NULL;//这一行的问题
    p=NULL;
    return 1;
}

在VS2010下测试时,提示:CX0069:错误:变量需要堆栈帧 

在Ubuntu下测试时,有一个warning如下:

warning: assignment makes pointer from integer without a cast

问题来了:1.对堆栈帧不太了解,百度了,但是都是一些关于堆栈的回答,没有满意的

2.不清楚为什么在VS下有这么一个错误,而linux下只是一个warning

Delphi 7:如何在调用堆栈中看到局部变量的值?

Delphi 7:如何在调用堆栈中看到局部变量的值?

在Delphi 7中,在调试时我可以看到当前上下文局部变量(Ctrl-Alt-L)和调用堆栈(Ctrl-Alt-S).当我将调用堆栈导航回调用方法时,我不知道如何检查调用方局部变量.可能吗?

这是我的一个古老的宠儿.我可以用我编程的所有语言来实现,但不能用Delphi实现.

解决方法

您正在寻找的功能是 added to the Win32 debugger in Delphi 2005:

Delphi 2005 Reviewer’s Guide

A popular debugging feature in Delphi 8 and C# Builder is the capability to select a particular frame from the call stack using the Local Variables dialog Box. This feature is Now available for the Borland Win32 Debugger.

With the Borland Win32 Debugger loaded,view the Local Variables dialog Box. (If this dialog Box is not already visible,select View | Debug Windows | Local Variables,or press Ctrl-Alt-L,to display it.) Initially,the values of variables local to the current function that the debugger is in are shown. To view local variables in one of the methods earlier in the call chain,select the method name from the drop-down menu.

07001

在Delphi 7中,局部变量视图始终显示执行中断的函数的局部变量.

delphi – (How)我可以在断点上导出调用堆栈吗?

delphi – (How)我可以在断点上导出调用堆栈吗?

当代码在断点处停止时,有没有办法导出调用堆栈?

我有很长的ID字符串,我需要抓住在另一个程序中使用(见图),从屏幕截图重新输入并不是一个选项;-)

我在XE2 IDE中点击但找不到任何东西.

(解决方法:现在我继续在断点之后逐步执行代码,直到我已经移动到足够远的堆栈,局部变量再次可用.)

解决方法

调用堆栈调试窗口支持通常的选择和剪贴板快捷方式.因此,使用CTRL A选择整个调用堆栈,使用CTRL C复制到剪贴板.或者您可以选择单个项目并使用CTRL C进行复制.或者您可以使用CTRL单击和SHIFT单击选择多个项目,依此类推.

delphi – 什么是安全的最大堆栈大小或如何衡量堆栈的使用?

delphi – 什么是安全的最大堆栈大小或如何衡量堆栈的使用?

我有一个带有多个工作线程的应用程序,每个核心一个.在现代的8核机器上,我有8个这样的线程.我的应用程序加载了很多插件,这些插件也有自己的工作线程.因为应用程序使用大量内存(照片,例如200 MB),我有内存碎片问题.问题是每个线程都分配了{$MAXSTACKSIZE …}的地址空间.它不是使用物理内存而是使用地址空间.
我将MAXSTACKSIZE从1MB降低到128KB并且似乎可以工作,但如果我接近极限,我现在不行.有没有可能测量真正使用多少堆栈?

解决方法

使用它来计算为当前线程的堆栈提交的内存量:
function CommittedStackSize: Cardinal;
asm
  mov eax,[fs:$4] // base of the stack,from the Thread Environment Block (TEB)
  mov edx,[fs:$8] // address of lowest committed stack page
                  // this gets lower as you use more stack
  sub eax,edx
end;

我没有的另一个想法.

关于如何在Delphi调用堆栈窗口中隐藏“非用户”堆栈帧?的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于CX0069:错误:变量需要堆栈帧?、Delphi 7:如何在调用堆栈中看到局部变量的值?、delphi – (How)我可以在断点上导出调用堆栈吗?、delphi – 什么是安全的最大堆栈大小或如何衡量堆栈的使用?等相关内容,可以在本站寻找。

本文标签: