我最近从原生代码转换为托管代码编程.我正在使用.NET.
由于我已经使用Windbg很长一段时间了,我也想用它来进行托管代码调试.
我的搜索带我进入SOS(罢工之子)扩展,这似乎有一些强大的命令.
即使我理解SOS中使用的大多数命令,我也无法找到正确执行源代码的方法,就像我可以使用本机代码的p和t指令一样.
这使调试体验变得困难,我真的想在调试时逐步调试代码.
我对此进行了一些研究,发现使用6.7.05.0版本的Windbg可以实现这一点,其中MS似乎已经发布了集成的托管调试,但在后续版本中回滚.
尽管如此,我对通过SOS进行调试时能够直播"源"代码非常感兴趣.特别是因为它现在真的阻碍了我的调试体验.
有没有办法实现这个目标?
任何有关如何执行此操作(或实际解决方法)的帮助表示赞赏.
我读了一篇关于Visual Studio 2012能够在即时窗口中支持Windbg命令的帖子.这要求在选择"附加到进程"选项下的传输时选择"Windows用户模式调试器"选项.
虽然这似乎适用于本地主机限定符,但我有兴趣知道我是否可以使用此方法调试远程目标进程,就像我们选择远程传输一样.
我正在使用Visual Studio 2012 Premium.
我尝试在限定符部分给出机器的IP,并选择了"Windows用户模式调试器"传输,但是我得到了"无法连接到机器"消息.
我也尝试过这个链接中提到的步骤:
http://msdn.microsoft.com/en-us/library/windows/hardware/hh439381(v=vs.85).aspx
但它不起作用.
另外,我不确定这篇文章是否适用于不同版本的Visual Studio,因为我在Qualifier字段旁边看到的按钮被命名为"Find ..."而不是文章中提到的"Browse".
有人可以帮我正确的步骤吗?
c++ windbg remote-debugging visual-studio-debugging visual-studio-2012
我正在尝试使用InitialSessionState.ImportPSModule以导入Powershell模块。
我有兴趣知道是否由于任何原因(例如找不到文件等)而导致模块导入失败。在失败的情况下,将此类代码放在try块中不会引发异常,并且该函数似乎会以静默方式失败,如果无法导入模块,则该函数会继续执行。
如果导入失败,是否有办法在代码中发出警报?
我正在尝试执行以下操作。在下面的代码中,模块“ TestModule1234”不存在。catch块不捕获异常。
注意:这只是原型测试代码,因此请忽略与生产代码相关的任何违规行为。
try
{
//Initializing the PowerShell runspace
InitialSessionState psSessionInitialState = InitialSessionState.CreateDefault();
LogFile.Log("Importing Module TestModule1234");
psSessionInitialState.ImportPSModule(new[] { "TestModule1234" });
LogFile.Log("Creating Powershell Runspace");
m_PoshRunspace = RunspaceFactory.CreateRunspace(psSessionInitialState);
}
catch (System.Exception ex)
{
LogFile.Log("Failed to create a Powershell Runspace");
LogFile.Log(ex.ToString());
throw;
}
Run Code Online (Sandbox Code Playgroud) 我是从C++/Win32开发环境迁移到C#/ .NET的人.我注意到的一件事是,大多数错误的状态是通过使用错误代码及其传播在C++/Win32中处理的.
相反,C#/ .NET中的大多数错误状态似乎都是通过使用异常来处理的,并且很少建议使用错误代码.
为什么这样?
我在Windows Server 2012上运行WindowsService,它需要模拟域管理员用户(也将其添加到计算机上的本地管理员组).
系统上启用了UAC,并使用LogonType为LOGON32_LOGON_INTERACTIVE的凭据调用LogonUser,似乎返回受限令牌而不是完整令牌.
这导致我试图做的管理任务失败.
在这种情况下调用LogonUser的正确方法是什么,以便返回完整的令牌而不是受限制的令牌?
PS:我在这里遇到了一个相关的问题如何在非交互式登录下通过模拟获得提升权限(UAC)? 但它没有显示为获取完整令牌而需要进行的确切调用.