如何解读Visual Studio的callstack?

发布于 2024-09-25 21:37:00 字数 323 浏览 5 评论 0原文

>    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()   

有人可以逐行解释一下上面的内容吗?

>    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()   

Can someone explain the above line by line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦回梦里 2024-10-02 21:37:01

这意味着指令指针位于可执行文件 vcam.ax 中的函数 CopyMediaType() 中,接下来的操作是进入该函数的 0x48 (=73) 字节机器代码。

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

等等。

FlashPlayer.exe 没有调试符号,因此它无法告诉您调用源自哪个函数,它只能告诉您返回地址在哪里。这是 FlashPlazer.exe 代码中的绝对返回地址,

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

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

It means the instruction pointer is in the executable vcam.ax, in the function CopyMediaType(), and the next operation is 0x48 (=73) bytes of machine code into the function.

This function was called from the executable vcam.ax, the method Set of a CMediaType object, and the return address is 0x41 bytes of code into the function.

And so on.

FlashPlayer.exe does not have debug symbols, so it can not tell you in which function the call originated, all it can say is where the return address is. This is the absolute return address in the code from FlashPlazer.exe

SetFormat was called with one parameter, a pointer to an _AMMediaType object. The pointer was NULL.

It seems weird that the other functions don't have parameters. operator= should have one parameter, but the debugger seems to have not enough information to display it. It might be a different function call method, as it recognizes the SetFormat call as C++ code but the others not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文