windows 崩溃转储中套接字调查

zdwk9cvp  于 2023-10-22  发布在  Windows
关注(0)|答案(2)|浏览(132)

我们有一个来自客户的崩溃转储(用户模式),该客户在使用我们的应用程序时遇到了网络问题。在崩溃转储中,我可以看到所有为网络打开的句柄。
问:如何调查与句柄关联的套接字?
Windbg!handle命令未显示有关连接属性的信息。我的意思是- socket status - bind/remote ip,- bind/remote port

  • 挂起数据缓冲区(将是伟大的)等。
68de4m5k

68de4m5k1#

套接字句柄是内核句柄(这就是为什么你可以将WriteFile写入它们),只有一个用户模式转储,你不能从它们中获得任何信息。事实上,你问的大多数信息(尤其是)挂起数据缓冲区)几乎肯定将在内核模式中被管理。
如果你想保留这些信息,你必须在你的应用程序中设置一个仪器,将套接字创建参数保存在用户模式内存中。

lskq00tm

lskq00tm2#

十年后...
但对于基于C#的套接字泄漏-
将转储加载到windbg中,

  • !analyze -v(可能不需要)
  • 运行!dumpheap -stat并找到套接字对象并将它们打印到屏幕上。
  • 检查几个套接字对象!dumpobj /d [地址]。
  • 在每一个里面你会看到对象里面的变量。
  • 我通过另一个操作进入了m_rightendpoint对象!dumpobj /d在该端点对象旁边的值上。查看内存中的m_tostring变量。有一个命令,但我只是加载内存窗口(在windbg预览的视图选项卡上)并粘贴该字符串的地址。你会在这里看到IP地址。

相关问题