callstack相关内容
据维基: 呼叫者将返回地址压入堆栈,和被叫 子程序,当它完成,弹出返回地址关闭呼叫 栈和控制转移到该地址。 产品图来自维基: 我不明白这一点。 说我有一个C程序如下: 的#include<&stdio.h中GT;INT美孚(INT X) { 返回X + 1; }无效的垃圾邮件() { INT A = 1; //局部变量 INT B =富(一)
..
我最近使用的 / FAsu 的Visual C ++编译器选项输出源+组件特别长的成员函数的定义。在装配输出,堆栈帧建立后,有一个神秘的 _chkstk()功能单一的电话。 在 _chkstk的MSDN网页() 并没有解释为什么这个函数被调用的原因。我也看到堆栈溢出的问题,堆栈会损坏内存?,但我分配更多页面大小的缓冲区不明白的OP和接受的答案都在谈论。 什么是 _chkstk() CRT功能的
..
我在项目工作中,我们已经修改了堆栈变量的声明的顺序,以减少生成的可执行文件的大小,在过去的嵌入式系统。例如,如果我们有: 无效FUNC() { 焦炭℃; INT I; 短S; ... } 我们将重新排序这是:无效FUNC() { INT I; 短S; 焦炭℃; ... } 由于对准问题第一个结果是正在使用12字节的堆栈空间而
..
有什么办法倾倒在C或C ++每次运行过程中调用堆栈一定的函数被调用?我心目中是这样的: 无效美孚() { print_stack_trace(); // Foo的身体 返回 } 其中, print_stack_trace 的工作方式类似于 主叫 Perl编写的。 或者是这样的: INT主要(无效) { //将打印出调试信息每次富()被调用 register_s
..
为什么低于code工作没有任何崩溃@运行? 和同样大小完全依赖于机器/平台/编译器!!我甚至可以在64位机器给高达200。怎么会在主要功能分割故障在操作系统中得到检测? 无效的主要(INT ARGC,CHAR *的argv []) { INT ARR [3]; 改编[4] = 99; } 在哪里这个缓冲空间从何而来?就是这个堆栈中分配给进程? 解决方案 东西我写了一段前
..
我知道有没有标准的C函数来做到这一点。我想知道什么是技术,这在Windows和* nix? (Windows XP中是我做这个,现在最重要的操作系统。) 解决方案 我们已经使用这个为我们的项目:
..
好吧,我的是将其命名为和上下文的,但显然这个词的问题的是不允许在标题中的问题。 总之,这里的问题:我为了提供日志不会搞乱我所有的服务,code的使用 IErrorHandler 在我的WCF服务。到现在为止,这伟大的工作。然而,现在我想移动到完全异步的服务,我现在遇到的问题
..
我想学习如何调用汇编语言程序。下面是一个简单的例子,显示我的问题。我推 7 对栈,调用程序;当procudeure从堆栈中弹出,这个值是不是我推的人。是否有人可以帮助我明白发生了什么,什么我可以做,使这项工作? PUSH 7 CALL FOOBAR MOV AH,4CH INT 21HFOOBAR PROC POP AX;没有7 RET FOOBAR ENDP 解决方案
..
(我认为有这个问题的机会很高要么是重复或以其他方式已经在这里回答,但寻找的答案是很难得益于“堆栈分配”和相关术语的干扰。) 我有一个玩具的编译器,我一直工作在一个脚本语言。为了能够同时它在进步暂停脚本的执行并返回到宿主程序,它有自己的堆栈:内存是简单的块与被使用正常的C $ C加一个“堆栈指针”变量对于诸如此类的事情等等等等$ C这样的操作。不感兴趣为止。 目前,我编译C.但我感兴趣的编译调查
..
我想获得的编程语言的低级操作是如何工作的,尤其是如何与OS / CPU互动更深入的了解。我可能是阅读对堆栈&NBSP每个堆栈/堆相关的线程每一个答案;溢出,而且都是辉煌。但是,仍然有一件事,我没有完全理解呢。 考虑伪code此功能,这往往是有效的防锈code; - ) FN富(){ 让= 1; 令b = 2; 让C = 3; 令d = 4; //线X
..
我想为与GCC产生的组装.cfi_def_cfa_offset指令使用的值的解释。我隐约知道.cfi指令涉及的呼叫帧和堆栈展开,但我想为什么,例如,值16和8由GCC编译在下面的C程序输出的装配均采用了更详细的解释在我的64位的Ubuntu的机器。 C程序: 的#include<&stdio.h中GT;INT主(INT ARGC,字符** argv的) { 的printf
..
我知道数组衰减到一个指针,使得如果一个所声明的 字符的事情; [8] 再后来就用的事情其他地方,的事情是一个指向数组的第一个元素。 此外,从我的理解,如果一个声明字符moreThings [8] [8]; 然后 moreThings 终止的不的类型字符指针,但类型的“指针为char数组”,因为衰变只发生一次。 在 moreThings 传递给函数(原型说无效doThings(CHAR
..
我已经教了一段时间的方式是,当我运行一个程序,可以立即进入堆叠的第一件事就是为主要方法的堆栈帧。如果我呼吁来自主,然后堆栈帧中的一个函数叫做foo(),它是局部变量(自动对象)和参数的大小被压入堆栈为好。 不过,我跑进了这个矛盾有两件事情。而且我希望有人可以清理我的困惑或者解释为什么真的没有任何矛盾。 第一种矛盾: 在新书“C ++程序设计语言”由Bjarne Stroustrup的第三版,
..
我使用的Word preSS作为我的一处骨干前来角项目,我是新来的角,花费了大量的时间阅读和学习。 我在这一点上的问题是,我设法让路由的工作,但由于某些原因的默认方式(不HTML5模式)无法工作。 我有一个列表,点击链接时,我应该去一个参数化的URL,我得到这个错误 http://screencast.com/t/024t0Pl6 我有一个应用程序,服务和控制器的文件,我将在这里发布的内容
..
反正我可以想象Android应用程序的调用堆栈?我可以在Eclipse中看到的是正在运行的线程: 我要的,就是看我的子程序调用方式,以便调试有关活动问题重新堆栈。 谢谢! 解决方案 在您的code加入破发点的地方,并在调试模式下运行时,您可能会看到调用堆栈然后。据我所知,虽然运行模式,它只是显示线程和进程的数量。它不会显示呼叫的序列
..
这将有可能看到调用堆栈在VBA的MS Access 2003?也就是说,它有可能来自什么程序或功能另一个函数来查看被称为? 解决方案 目前在VBA没有编程的方式来查看调用堆栈,我知道的。通常解决这个问题的方法是使用一些结构来跟踪呼叫的功能,但它似乎总是像一个杂牌组装电脑给我,真的使用,只有当编程(不是在运行时),在这种情况下,在我看来,该VBE的内置的能力看到调用堆栈就足够了。 和,顺便说一
..
我正在学习一些安全相关的事情,现在我摆弄我自己的堆栈。我在做什么应该是很琐碎,我还没有尝试执行的栈,只是为了证明我可以控制我的64位系统的指令指针。我已经关闭了我所知道的一切保护机制只是为了能够与它(NX位,ASLR,还与-fno-堆栈保护-z execstack编译)来播放。 我没有与64位汇编和花一些时间搜索和尝试自己,我想知道如果任何人都可以阐明一个问题,我遇到了一些光在那之后很多经验。
..
似乎有一个意见,在那里,用的是“拆分堆叠”运行模式是不必要的64位架构。我说,好像是的,因为我还没有看到有人居然说,只有跳舞吧: 一个典型的多线程程序的内存使用量可以减少 显著,因为每个线程不需要最坏情况堆 尺寸。变得可以运行百万线程(全NPTL 在一个32位地址空间的线程或协同例程)。 - 伊恩·兰斯·泰勒 ......这意味着一个64位的地址空间已经可以应付自如。 和 ...分
..
我有一个按钮,一个.NET应用程序。当我按一下按钮我希望应用程序打印所有线程的线程堆栈调试控制台。 是否有可能做到这一点? Datte。 解决方案 这可能是有用的人发现这个问题的 HTTP://stackdump.$c$cplex.com/
..
我想知道这是否是安全的,请使用以下code,以确定名称(以及可能的更多信息),调用当前执行code中的方法或对象: 堆栈跟踪堆栈跟踪=新的堆栈跟踪(); //获取调用堆栈 的StackFrame [] stackFrames = stackTrace.GetFrames(); //获取方法调用(帧) 更具体地说,有什么特殊的/角落的情况下访问该框架是行不通的,或抛出异常? 我都对着堆
..