【问题标题】:How can you attach WinDbg to a process running inside a Windows Docker Container?如何将 WinDbg 附加到在 Windows Docker 容器中运行的进程?
【发布时间】:2021-01-19 11:53:09
【问题描述】:

如何将 WinDbg 附加到在 Windows Docker 容器中运行的进程? 我试过用谷歌搜索它,但似乎一切都使用 Visual Studio 来做到这一点。我只是想用WinDbg之类的东西来快速分析一下宿主机上运行的进程。

【问题讨论】:

  • 到目前为止你有什么尝试?在搜索引擎中输入“windbg docker”(请根据您的具体情况进行优化)会得到大量结果,其中一些来自 Microsoft 官方网站。您在遵循这些建议时遇到了什么问题,它们在哪些方面不适合您的具体情况?
  • @Zeitounator 也许您实际上应该阅读其中一些链接(就像我已经阅读过的那样),因为您会看到它们使用的是visual-studio,实际上不是windbg。我不知道您是否曾经尝试过使用 Visual Studio 进行远程调试。如果你有那么你知道我为什么使用windbg。如果您没有这方面的经验,请随时让其他人发表评论。
  • 如果特定链接不相关,请忽略它们。事实是:有关于如何设置 windbg 的信息(是否在 docker 容器中)。如果您实际描述并展示您已经尝试过的内容,或者甚至只是列出您已阅读的链接以及它们如何不适合您的情况,您将有更好的机会获得答案。我的评论或多或少是对一些how to ask(和相关帮助文章)提示的改写,尽管(你完全正确)我对这个主题一无所知。但你完全可以忽略它。
  • @Zeitounator 我很欣赏你的 cmets,但我觉得你在惩罚我,因为我没有使用一些你认为存在但实际上没有提供链接的信息。 WinDbg 是一个 Windows GUI 应用程序,我很确定 docker for windows 没有桌面。
  • 我已经简化了问题

标签: docker windbg docker-for-windows .net-framework-version


【解决方案1】:

第一次使用 Docker,所以也许这不是您想要的
我不做 Docker 出名的 c# asp.net iis thingies

就这样
安装 Docker 桌面

C:\>docker version

Client: Docker Engine - Community
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:14:16 2020
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.24)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:26:48 2020
  OS/Arch:          windows/amd64
  Experimental:     false

快速入门

docker run -d -p 80:80 docker/getting-started

拉取微软/nanoserver:1803

C:\>docker images
REPOSITORY             TAG       IMAGE ID       CREATED         SIZE
microsoft/nanoserver   1803      65194053090c   11 months ago   378MB

在后台分离的交互式容器中运行容器

C:\>docker run -d -it --name="mydoc" microsoft/nanoserver:1803
23b9265196659cc073bc05ec81f6b58be465db6e305645e1af13c5831c0ca4e3

停下来

C:\>docker stop mydoc
mydoc

复制 windbg x64 文件夹和 /MT 编译的控制台 c++ printf 应用程序进行测试

C:\>docker cp d:\doc_trans\ mydoc:c:\

启动容器

C:\>docker start mydoc
mydoc

在应用上执行 cdb

C:\>docker exec -it mydoc "c:\\doc_trans\\x64\\cdb.exe" c:\\doc_trans\printf.exe

Microsoft (R) Windows Debugger Version 10.0.17763.132 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

CommandLine: c:\\doc_trans\printf.exe
Symbol search path is: srv*
Executable search path is:
ModLoad: 00007ff7`76420000 00007ff7`76487000   printf.exe
ModLoad: 00007ff8`86e60000 00007ff8`87041000   ntdll.dll
ModLoad: 00007ff8`84290000 00007ff8`84503000   C:\Windows\System32\KERNELBASE.dll
ModLoad: 00007ff8`83b20000 00007ff8`83b45000   C:\Windows\SYSTEM32\forwarders\KERNEL32.dll
ModLoad: 00007ff8`83fd0000 00007ff8`84017000   C:\Windows\System32\kernel32legacy.dll
(660.664): Break instruction exception - code 80000003 (first chance)
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntdll.dll -
ntdll!LdrInitShimEngineDynamic+0x34c:
00007ff8`86f2c8bc cc              int     3
0:000> g 00007ff7`76420000+1000
*** ERROR: Module load completed but symbols could not be loaded for printf.exe
printf+0x1000:
00007ff7`76421000 4883ec28        sub     rsp,28h
0:000> uf .
printf+0x1000:
00007ff7`76421000 4883ec28        sub     rsp,28h
00007ff7`76421004 488d0d35c30400  lea     rcx,[printf+0x4d340 (00007ff7`7646d340)]
00007ff7`7642100b e870000000      call    printf+0x1080 (00007ff7`76421080)
00007ff7`76421010 33c0            xor     eax,eax
00007ff7`76421012 4883c428        add     rsp,28h
00007ff7`76421016 c3              ret
0:000> t
printf+0x1004:
00007ff7`76421004 488d0d35c30400  lea     rcx,[printf+0x4d340 (00007ff7`7646d340)]
0:000> t
printf+0x100b:
00007ff7`7642100b e870000000      call    printf+0x1080 (00007ff7`76421080)
0:000> da @rcx
00007ff7`7646d340  "hello jmp far."
0:000>                                               

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多