封闭为"如何找到调用当前方法的方法?"的完全重复.
是否这可能与C#?
void main()
{
Hello();
}
void Hello()
{
// how do you find out the caller is function 'main'?
}
Run Code Online (Sandbox Code Playgroud) 在C#中,什么是执行帧(也与此有关,我听说过激活帧).IIRC它是一个方法参数去的槽,但不记得所有的细节.
谢谢
最近我经历了继承概念.
众所周知,在继承中,superclass对象是在subclass对象之前创建/初始化的.因此,如果我们创建一个对象subclass,它将包含所有超类信息.
但我一度陷入困境.
超类和子类方法是否存在于单独的调用堆栈中?如果是这样,有没有specific reason相同的?如果不是这样,为什么它们不会出现在同一个调用堆栈中?
例如
// Superclass
class A {
void play1( ) {
// ....
}
}
// Subclass
class B extends A {
void play2( ) {
//.....
}
}
Run Code Online (Sandbox Code Playgroud)
然后确实上述2种方法,即play1( )和play2( )显示在单独的调用堆栈?
谢谢.
当std :: exception引发时,如何打印完整的调用堆栈?
我有一个很棒的小功能,看起来像这样:
def verbose_print(message, *args, **kwargs):
"""Prints `message` with a helpful prefix when in verbose mode
Args:
message (str): The message to print. Can be a format string, e.g.
`A %s with some %s in it`
*args: Variables for the message format
**kwargs: Keyword variables for the message format
"""
# Only print when in verbose mode
if not config.verbose:
return
# Ready a prefix for the message
try:
s = inspect.stack()
module_name = inspect.getmodule(s[1][0]).__name__
func_name = s[1][3]
prefix = '### …Run Code Online (Sandbox Code Playgroud) 我想要有关VC++(32位和64位)中堆栈溢出的准确信息,特别是在递归中.在调试模式下,这种情况很快发生在递归中(如4500运行简单的递归函数不做任何事情或类似).但是,似乎发布模式不同.这很难理解,我现在没有测试它,因为优化会删除不做任何事情的代码(显然会删除递归),因为我的代码或函数是这样的......我应该做更多...我测量在优化版本中的正确时间,我不知道优化是否会通过递归实现更复杂的快速排序?
谢谢!
我尝试了以下链接,来自StackOverflow和其他网站,[我试过,但它没有帮助我,所以我无法避免重复]
http://www.codeproject.com/KB/threads/StackWalker.aspx
http://jpassing.com/2008/03/12/walking-the-stack-of-the-current-thread/
但是没有一个代码适用于我.我是Windows C++环境的新手,我无法获得上述任何代码.
我正在寻找一个调用堆栈格式,如
FUNCTION_NAME_DEPTH_1:_LINE_NUM__
FUNCTION_NAME_DEPTH_1:_LINE_NUM__
FUNCTION_NAME_DEPTH_1:_LINE_NUM__ ...
只是功能名称和行号.
我的环境:
Visual Studio 2010
SDK:v7.1
Windows 7 Pro SP1
如果有人发布一个头文件,[似乎很少可用,但没有工作],我们可以包含在我们的cpp文件中并使用像'PrintFunctionCallStack();这样的调用打印调用堆栈,这将是很简单的..BTW在Linux/Mac中,它变得容易多了,我能够从回溯中获得调用堆栈,而且它非常简单,我自己在几分钟内完成了它.在Windows中,我已经尝试了两天,但毫不奇怪.
Linux/Mac堆栈跟踪代码,我还没有解码符号名称.
#ifndef _STACKTRACE_H_
#define _STACKTRACE_H_
#include <stdio.h>
#include <stdlib.h>
#include <execinfo.h>
#include <cxxabi.h>
#include <iostream>
static inline void PrintStackTrace()
{
cout<<"##############################################\n";
unsigned int maxStackCount = 63;
void* addressList[maxStackCount+1];
int addrLen = backtrace(addressList, sizeof(addressList) / sizeof(void*));
if (addrLen == 0) {
cout<<"Empty Stack, Probably Corrupted it seems ###\n";
return;
}
char** symbolList = …Run Code Online (Sandbox Code Playgroud) 当代码在断点处停止时,有没有办法导出调用堆栈?
我有很长的ID字符串,我需要抓住在另一个程序中使用(见图),从屏幕截图重新输入并不是一个选项;-)
我在XE2 IDE中点击但找不到任何东西.
(解决方法:现在我继续在断点之后逐步执行代码,直到我已经移动到足够远的堆栈,局部变量再次可用.)

我正在使用Angular-Bootstrap Carousel指令,并在其上进行一些更改。轮播有ng-repeat幻灯片。
我试图通过将左右控件悬停而不是单击来转到下一张/上一张幻灯片。并通过更改object.active状态来实现(以前为false-新为true)
无论如何,几轮之后,我所有的物体都active=false摆好了,转盘什么也没显示。在调试数组并$watch在每个对象上发现错误后,是因为该指令以某种方式更改了active=false我不希望的时间。
长话短说:我能以某种方式获取我正在使用的范围内的对象的调用堆栈$watch吗?
例如,我的监视代码如下:
$scope.$watch('requestFilters[0]', function(obj) {
console.log('Item 0 changed');
}, true);
Run Code Online (Sandbox Code Playgroud) 我正在使用C++(Visual Studio 2015)调试大型应用程序上的"访问冲突"异常.该应用程序是由几个库构建的,其中一个(SystemC)会出现问题,尽管我怀疑问题的根源在其他地方.
m_update_phase = true;
m_prim_channel_registry->perform_update();
m_update_phase = false;
Run Code Online (Sandbox Code Playgroud)
inline
void
sc_prim_channel_registry::perform_update()
{
for( int i = m_update_last; i >= 0; -- i ) {
m_update_array[i]->perform_update();
}
m_update_last = -1;
}
Run Code Online (Sandbox Code Playgroud)
(这些是从摘录systemc\kernel\sc_simcontext.cpp和systemc\communication\sc_prim_channel.h,所述的部分SystemC的库)
通过上面的代码多次迭代后发生错误.调用m_prim_channel_registry->perform_update()抛出0xC0000005: Access violation writing location 0x0F4CD9E9.异常.
只有在Release配置中构建应用程序时才会发生这种情况
看看汇编代码,我看到函数sc_prim_channel_registry::perform_update()是内联的,内部函数调用m_update_array[i]->perform_update()似乎破坏了调用函数的堆栈框架.
当m_update_last = -1;被执行时,与m_update_last不再指向有效的存储位置,并抛出异常.
(m_update_last是类的一个简单的天然成员sc_prim_channel_registry具有类型int)
m_update_phase = true;
m_prim_channel_registry->perform_update();
1034D99E mov eax,dword ptr [esi+10h]
1034D9A1 …Run Code Online (Sandbox Code Playgroud) callstack ×10
c++ ×3
c# ×2
stack ×2
breakpoints ×1
c ×1
carousel ×1
class ×1
corruption ×1
debugging ×1
delphi ×1
delphi-xe2 ×1
exception ×1
hover ×1
ide ×1
inheritance ×1
java ×1
python ×1
recursion ×1
systemc ×1
visual-c++ ×1
windows ×1