如何解读visual studio的调用栈?

时间:2010-10-03 15:32:33

标签: c++ visual-studio callstack

>    vcam.ax!CopyMediaType()  + 0x49 bytes    
     vcam.ax!CMediaType::Set()  + 0x41 bytes    
     vcam.ax!CMediaType::operator=()  + 0x2f bytes    
     vcam.ax!CVCamStream::SetFormat(_AMMediaType * pmt=0x00000000)  Line 201    C++
     FlashPlayer.exe!005641be()   

有人可以逐行解释上述内容吗?

1 个答案:

答案 0 :(得分:3)

这意味着指令指针位于可执行文件vcam.ax中,在函数CopyMediaType()中,并且下一步操作是将0x48(= 73)字节的机器代码放入函数中。

此函数是从可执行文件vcam.ax,CMediaType对象的Set方法调用的,返回地址是函数中0x41字节的代码。

等等。

FlashPlayer.exe没有调试符号,因此它无法告诉您调用源自哪个函数,它可以说是返回地址的位置。这是FlashPlazer.exe

代码中的绝对返回地址

使用一个参数调用SetFormat,该参数是指向_AMMediaType对象的指针。指针为NULL。

其他功能没有参数似乎很奇怪。 operator =应该有一个参数,但调试器似乎没有足够的信息来显示它。它可能是一个不同的函数调用方法,因为它将SetFormat调用识别为C ++代码,但其他调用不是。