小编low*_*ign的帖子

未加载ngen-ed程序集的符号

我试图从procmon解码以下调用堆栈行:

29  System.Management.Automation.ni.dll System.Management.Automation.ni.dll + 0x897a0a  0x7fee2ae7a0a   C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Manaa57fc8cc#\a86698074f28597f1fc5ceabfed6fed6\System.Management.Automation.ni.dll
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,其中有一个NGEN-ed程序集:System.Management.Automation.ni.dll.我使用ngen createpdb为它创建了一个pdb文件:

PS> ngen createpdb c:\Windows\assembly\NativeImages_v4.0.30319_64\System.Manaa57fc8cc#\a86698074f28597f1fc5ceabfed6fed6\System.Management.Automation.ni.dll c:\symbols\ngen

Successfully generated PDB for native assembly 'c:\Windows\assembly\NativeImages_v4.0.30319_64\System.Manaa57fc8cc#\a8698074f28597f1fc5ceabfed6fed6\System.Management.Automation.ni.dll'.
PDB generated in directory c:\symbols\ngen\System.Management.Automation.ni.pdb a86698074f28597f1fc5ceabfed6fed61\
Run Code Online (Sandbox Code Playgroud)

_NT_SYMBOL_PATH变量中的符号路径是:

SRV*C:\symbols\ngen*;SRV*C:\symbols\dbg*http://referencesource.microsoft.com/symbols;SRV*C:\symbols\dbg*http://msdl.microsoft
Run Code Online (Sandbox Code Playgroud)

.COM /下载/符号

但我仍然可以看到没有为程序集加载新生成的符号文件:

PS a86698074f28597f1fc5ceabfed6fed6> dbh -n .\System.Management.Automation.ni.dll
verbose mode on.
DBGHELP: No header for .\System.Management.Automation.ni.dll.  Searching for image on disk
DBGHELP: C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Manaa57fc8cc#\a86698074f28597f1fc5ceabfed6fed6\System.Management.Automation.ni.dll - OK
SYMSRV:  C:\symbols\ngen\System.Management.Automation.pdb\6B8B8F14D0564CB893B6E84B43CAE67B1\System.Management.Automation.pdb - file not found
SYMSRV:  C:\tools\diag\Debugging Tools for Windows\x64\sym\System.Management.Automation.pdb\6B8B8F14D0564CB893B6E84B43CAE67B1\System.Management.Automation.pdb - file not found
SYMSRV:  C:\symbols\ngen\System.Management.Automation.pdb\6B8B8F14D0564CB893B6E84B43CAE67B1\System.Management.Automation.pdb not found
SYMSRV: …
Run Code Online (Sandbox Code Playgroud)

.net debugging symbols windbg pdb

12
推荐指数
1
解决办法
805
查看次数

如何关联 ETW 跟踪中的 RPC 调用?

我记录了一个应用程序在 Windows 上执行本地 RPC 调用的痕迹。我使用 xperf 并启用了Microsoft-Windows-RPC提供程序。打开跟踪后,我意识到关联客户端和服务器调用并不是那么简单。通过一个例子来解释这个问题会更容易。

客户端发送的RpcClientCall事件之一如下所示:

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
    <System>
        <Provider Name="Microsoft-Windows-RPC" Guid="{6ad52b32-d609-4be9-ae07-ce8dae937e39}" />
        <EventID>5</EventID>
        <Version>1</Version>
        <Level>4</Level>
        <Task>1</Task>
        <Opcode>1</Opcode>
        <Keywords>0x4000000000000000</Keywords>
        <TimeCreated SystemTime="2017-01-02T18:21:54.825009200+0059" />
        <Correlation ActivityID="{f9ace53a-28fe-4129-ac24-8d04ea0a79a9}" />
        <Execution ProcessID="10688" ThreadID="5384" ProcessorID="7" KernelTime="30" UserTime="15" />
        <Channel>Microsoft-Windows-RPC/Debug</Channel>
        <Computer />
    </System>
    <EventData>
        <Data Name="InterfaceUuid">{e60c73e6-88f9-11cf-9af1-0020af6e72f4}</Data>
        <Data Name="ProcNum">0x8</Data>
        <Data Name="Protocol">       3</Data>
        <Data Name="NetworkAddress">NULL</Data>
        <Data Name="Endpoint">epmapper</Data>
        <Data Name="Options">NULL</Data>
        <Data Name="AuthenticationLevel">       6</Data>
        <Data Name="AuthenticationService">      20</Data>
        <Data Name="ImpersonationLevel">       3</Data>
    </EventData>
    <RenderingInfo Culture="en-US">
        <Level>Information </Level>
        <Opcode>Start </Opcode>
        <Task>RpcClientCall</Task>
        <Message>Client RPC call started.   InterfaceUuid:  {e60c73e6-88f9-11cf-9af1-0020af6e72f4}  OpNum:  0x8 …
Run Code Online (Sandbox Code Playgroud)

windows ipc etw msrpc

6
推荐指数
1
解决办法
2299
查看次数

NHibernate:SQL查询结果映射

我在NHibernate 3.1.0.4000(我正在使用MS SQL Server 2005数据库)中遇到SQL查询结果的问题.我有两个表:AdvertsInvestments映射到实体的表:AdvertInvestment.AdvertsInvestmentsvia InvestmentId列(和外键)连接.

为了保存查询结果,我创建了一个以下内部类:

    class InvestmentWithAdvertsCount
    {
        public Investment inv { get; set; }

        public int cnt { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

查询如下:

var investementsWithAdvertCounts = _session.CreateSQLQuery(
                            "select {inv.*}, (select count(1) from Adverts where InvestmentId = inv.Id) cnt from Investments inv")
                            .AddScalar("cnt", NHibernateUtil.Int32)
                            .AddEntity("inv", typeof(Investment))
                            .SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(InvestmentWithAdvertsCount)))
                            .List<InvestmentWithAdvertsCount>();
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,我收到一个InvestmentWithAdvertsCount具有正确填充cnt属性的实例集合,但该inv属性设置为null.我花了一些时间深入研究NHibernate源代码,似乎inv别名在某种程度上从查询中丢失了,NHibernate甚至没有尝试填充inv属性.如果我删除该.SetResultTransformer部分,我会收到一个数组列表(类型object[2]),第一个元素设置为 …

.net nhibernate

2
推荐指数
1
解决办法
6542
查看次数

标签 统计

.net ×2

debugging ×1

etw ×1

ipc ×1

msrpc ×1

nhibernate ×1

pdb ×1

symbols ×1

windbg ×1

windows ×1