{"componentChunkName":"component---src-templates-post-template-js","path":"/windows-windbg-proxmox-remotekd-en","result":{"data":{"markdownRemark":{"id":"b3130164-37d6-50a0-becb-bf7c2abaf126","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/windows-windbg-proxmox-remotekd\">original page</a>.</p>\n</blockquote>\n<p>This article summarizes how I resolved a problem where remote kernel debugging with WinDbg did not work between Windows 11 VMs on Proxmox.</p>\n<p>I eventually got remote kernel debugging between Proxmox VMs working by applying the following settings.</p>\n<ol>\n<li>Instead of using kdnet.exe, explicitly set the <code class=\"language-text\">busparams=b.d.f</code> value for the NIC that KDNET should use with bcdedit</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">bcdedit /debug on\nbcdedit /dbgsettings net hostip:192.168.10.20 port:50000 key:<span class=\"token operator\">&lt;</span>Key<span class=\"token operator\">></span> nodhcp\nbcdedit /set <span class=\"token string\">\"{dbgsettings}\"</span> busparams <span class=\"token operator\">&lt;</span>busparams you checked<span class=\"token operator\">></span>\n\n<span class=\"token comment\"># Verify the settings</span>\nbcdedit /dbgsettings</code></pre></div>\n<ol start=\"2\">\n<li>Start the target machine with <code class=\"language-text\">qm start &lt;VMID> --force-cpu host</code> so it boots without using the Hyper-V Enlightenments settings that Proxmox enables by default</li>\n</ol>\n<!-- omit in toc -->\n<h2 id=\"table-of-contents\" style=\"position:relative;\"><a href=\"#table-of-contents\" aria-label=\"table of contents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Contents</h2>\n<ul>\n<li><a href=\"#environment\">Environment</a></li>\n<li><a href=\"#the-problem-i-ran-into-and-what-seems-to-have-caused-it\">The Problem I Ran Into and What Seems to Have Caused It</a></li>\n<li><a href=\"#notes-what-i-checked-on-proxmox\">Notes: What I Checked on Proxmox</a></li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<h2 id=\"environment\" style=\"position:relative;\"><a href=\"#environment\" aria-label=\"environment permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Environment</h2>\n<p>The environment in this case was as follows.</p>\n<ul>\n<li>Windows 11 25H2 VMs on Proxmox VE (host + target)</li>\n<li>The host and target were connected to the same bridge</li>\n<li>For the network interfaces on both the host and target, select E1000 rather than virtio</li>\n</ul>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0b8d2a5c4ba78976663625ab93754dcd/bb2fd/image-20260502130040115.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.083333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVQY021Ri3KCMBDkO6wI1oJMAQGhgEQDaMAnD42CVpGx//8RPR8zndbuZG4um91MbsO4CFumKcsyz/PtdrvT6TiuY9u2oih90zQM3TAMSZLup3/AhGMyHHpitwsbUAiCgH0fj7CqKvL7A8Kb8L8ZeSgMx92bGSCKIsZY13VgOI7jr6aH7fUJzAiAseu6oH5pNIDyBl4QBFBbXKvZbLIse7+FfQITkSjP13S7jePYsiyEUJ7naZqu10ACTbMsWywWcApBOL/BJElS3EApJYSMJ5OiKMtyD2u+XE5ncxLF2A+uQVzrT+MHIUM3tD7Xu90O1GmakGh6Ol+q+nI814dTtT9VxeFY7j+r+ivNN8skW6X5fJVAjeIZY+h9SEjTtPtggiAOXO/DdtBw5CEEcUCF+eHJak/rgU4zFBVaDf7lG9ZMZiimdDacAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0b8d2a5c4ba78976663625ab93754dcd/8ac56/image-20260502130040115.webp 240w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/d3be9/image-20260502130040115.webp 480w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/e46b2/image-20260502130040115.webp 960w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/acaf1/image-20260502130040115.webp 1058w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0b8d2a5c4ba78976663625ab93754dcd/8ff5a/image-20260502130040115.png 240w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/e85cb/image-20260502130040115.png 480w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/d9199/image-20260502130040115.png 960w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/bb2fd/image-20260502130040115.png 1058w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0b8d2a5c4ba78976663625ab93754dcd/d9199/image-20260502130040115.png\"\n            alt=\"image-20260502130040115\"\n            title=\"image-20260502130040115\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"the-problem-i-ran-into-and-what-seems-to-have-caused-it\" style=\"position:relative;\"><a href=\"#the-problem-i-ran-into-and-what-seems-to-have-caused-it\" aria-label=\"the problem i ran into and what seems to have caused it permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Problem I Ran Into and What Seems to Have Caused It</h2>\n<p>I followed the same steps as <a href=\"/magical-windbg-vol2-01-en#perform-kernel-debugging-over-the-network\">Perform Kernel Debugging over the Network</a> to configure network debugging with kdnet.exe, and I also had WinDbg listen on the host side, but after rebooting the target it still did not connect.</p>\n<div class=\"gatsby-highlight\" data-language=\"cmd\"><pre class=\"language-cmd\"><code class=\"language-cmd\">windbg.exe -k net:port=50000,key=&lt;Key&gt;</code></pre></div>\n<p>On the target side, running kdnet.exe did display <code class=\"language-text\">Network debugging is supported</code>, but it also displayed an error with error code 0xC0000182 like the following.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">KDNET transport initialization failed during a previous boot. Status = 0xC0000182.\nNIC hardware initialization failed.\nKDNET did not successfully receive any packets during init.\nKDNET did not successfully send any packets during init.</code></pre></div>\n<p>Apparently, the target was not generating any debugging traffic at all. While investigating, I found the following article.</p>\n<p>Reference: <a href=\"https://blog.iret.xyz/posts/libvirt-hyperv-with-kdnet/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">libvirt的Hyper-V虚拟化或导致Windows KDNET初始化失败 - Silver</a></p>\n<p>According to that article, QEMU as used by Proxmox has a feature for Windows guests called Hyper-V Enlightenments that makes the guest recognize itself as running on Hyper-V, and this apparently can affect how KDNET behaves on virtual machines that are not actually using Hyper-V.</p>\n<p>Reference: <a href=\"https://www.qemu.org/docs/master/system/i386/hyperv.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hyper-V Enlightenments — QEMU documentation</a></p>\n<p>(I have not been able to investigate this in detail, but it seems KDNET behaves differently on machines running on Hyper-V, and when a virtual machine that is not actually using Hyper-V ends up in this state, network debugging may stop working properly.)</p>\n<h2 id=\"notes-what-i-checked-on-proxmox\" style=\"position:relative;\"><a href=\"#notes-what-i-checked-on-proxmox\" aria-label=\"notes what i checked on proxmox permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Notes: What I Checked on Proxmox</h2>\n<p>First, I ran the following command to inspect the options used when Proxmox starts the VM.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">qm showcmd <span class=\"token operator\">&lt;</span>VMID<span class=\"token operator\">></span> --pretty</code></pre></div>\n<p>As a result, I found that the CPU flags included several options starting with <code class=\"language-text\">hv_</code>, as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e236ce8621a65fc8be8f27098c46ad5b/720e3/image-20260502132143123.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 47.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8klEQVQoz5WS226DMBBEzUVgwjWx8RWTgPiHtMn//1cmXrVqE1WoBx72ZXZ3Zs200YdIdaiyLGP/YgpBa62UGo5HXj2/bzjnSZLsiP3kQwjW2mEYmqap65rEZVnuTLbOylHiV1oLIU6Rvu/RAn3atqW6KIo0TV/F3nsVMcacxJOu69ofQJnnOeJI3mDX68f9dvv8Yts27O+csxEqdMS8wZZlnefz+XIx1tKGsJr+JvsDZuKEECZ0Gke4l13fI62dnIkwY/C8rssUA4dh3BzzeQRbkD3MfzUMlNJwRh6c93gzyB9WpZA4G/R0cGoEqMjjc3oAGXcbjLfWZtEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e236ce8621a65fc8be8f27098c46ad5b/8ac56/image-20260502132143123.webp 240w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/d3be9/image-20260502132143123.webp 480w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/e46b2/image-20260502132143123.webp 960w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/f992d/image-20260502132143123.webp 1440w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/882b9/image-20260502132143123.webp 1920w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/a2081/image-20260502132143123.webp 1962w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e236ce8621a65fc8be8f27098c46ad5b/8ff5a/image-20260502132143123.png 240w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/e85cb/image-20260502132143123.png 480w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/d9199/image-20260502132143123.png 960w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/07a9c/image-20260502132143123.png 1440w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/29114/image-20260502132143123.png 1920w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/720e3/image-20260502132143123.png 1962w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e236ce8621a65fc8be8f27098c46ad5b/d9199/image-20260502132143123.png\"\n            alt=\"image-20260502132143123\"\n            title=\"image-20260502132143123\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>These CPU flags seem to be added automatically as default flags when the machine type is set to Windows in Proxmox.</p>\n<p>Reference: <a href=\"https://forum.proxmox.com/threads/tricki-problem-with-windows-and-nested-virtualization.143914/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Tricki problem with Windows and nested Virtualization. | Proxmox Support Forum</a></p>\n<p>Reference: <a href=\"https://github.com/proxmox/qemu-server/blob/f0923f49e94c9561302a23652cd156363fb4e430/PVE/QemuServer/CPUConfig.pm#L669\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">qemu-server/PVE/QemuServer/CPUConfig.pm at f0923f49e94c9561302a23652cd156363fb4e430 · proxmox/qemu-server</a></p>\n<p>In the end, I could not find a clean solution because I could not change these startup flags even by modifying configuration files, and changing the machine type away from Windows caused the virtual machine to stop booting.</p>\n<p>However, I found that using <code class=\"language-text\">--force-cpu</code>, as in <code class=\"language-text\">qm start &lt;VMID> --force-cpu host</code>, lets you force the CPU args used at startup. By using this command when starting the target machine, I was finally able to perform kernel debugging successfully.</p>\n<p>Reference: <a href=\"https://pve.proxmox.com/pve-docs/qm.1.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">qm(1)</a></p>\n<h2 id=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary</h2>\n<p>I did not reach a fully satisfying explanation because I still do not have a deep enough understanding of the hypervisor or the internal behavior of Windows KDNET, but I was at least able to make network kernel debugging work in a Proxmox environment, so I am leaving this here as a memo.</p>","fields":{"slug":"/windows-windbg-proxmox-remotekd-en","tagSlugs":["/tag/win-dbg-en/","/tag/proxmox-en/","/tag/kdnet-en/","/tag/english/"]},"frontmatter":{"date":"2026-05-02","description":"This article summarizes my suspected cause when KDNET-based remote kernel debugging failed between Windows 11 VMs on Proxmox, how I checked the VM settings from Proxmox, how I configured dbgsettings with an explicit busparams value, and the steps that finally made it work with qm start --force-cpu host.","tags":["WinDbg (en)","Proxmox (en)","KDNET (en)","English"],"title":"How I Got Remote Kernel Debugging Working on Windows 11 VMs Running on Proxmox","socialImage":{"publicURL":"/static/04c555b5a1702ce1a73162281fc28e5d/windows-windbg-proxmox-remotekd.png"}}}},"pageContext":{"slug":"/windows-windbg-proxmox-remotekd-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}