Range syntax doesn't work well with evaluation operator?

Maybe I’m doing something silly, but this looks like the ?? C++
Evaluation operator isn’t getting along with the range syntax? (I’m
using 6.7.5.1.) Please point out the error of my ways, or maybe this is
a bug or just something that isn’t supported. Thanks!

kd> ??((void *)Trace!traceDeviceExtension->pTraceBuffer)
void * 0x85892008
kd> ??(Trace!traceDeviceExtension->TraceHead)
unsigned long 0x996c0
kd> .writemem trace.2.log ??((void
*)Trace!traceDeviceExtension->pTraceBuffer)
L??(Trace!traceDeviceExtension->TraceHead)
Syntax error at '??((void *)Trace!traceDeviceExtension->pTraceBuffer) ’
kd> .writemem trace.2.log 0x85892008
L??(Trace!traceDeviceExtension->TraceHead)
Syntax error at ‘?(Trace!traceDeviceExtension->TraceHead)’

i dont think you can use double question marks on L like L??

i mean i havent done it that way and according to the help file i
think its just a single ?

like L?0x99c60

may be you could try r $t0 = trace####->tracehead

L?$t0

hope that helps

raj_r

On 9/8/07, Taed Wynnell wrote:
>
>
> Maybe I’m doing something silly, but this looks like the ?? C++ Evaluation
> operator isn’t getting along with the range syntax? (I’m using 6.7.5.1.)
> Please point out the error of my ways, or maybe this is a bug or just
> something that isn’t supported. Thanks!
>
> kd> ??((void *)Trace!traceDeviceExtension->pTraceBuffer)
> void * 0x85892008
> kd> ??(Trace!traceDeviceExtension->TraceHead)
> unsigned long 0x996c0
> kd> .writemem trace.2.log ??((void
> *)Trace!traceDeviceExtension->pTraceBuffer)
> L??(Trace!traceDeviceExtension->TraceHead)
>
> Syntax error at '??((void
> *)Trace!traceDeviceExtension->pTraceBuffer) '
> kd> .writemem trace.2.log 0x85892008
> L??(Trace!traceDeviceExtension->TraceHead)
> Syntax error at ‘?(Trace!traceDeviceExtension->TraceHead)’
>
> —
> You are currently subscribed to windbg as: unknown lmsubst tag argument: ‘’
> To unsubscribe send a blank email to
> xxxxx@lists.osr.com

yes you have to assign the evaluated expression or yo can probably try
bracketing it like L? (?? Trace####->Tracehaead)
0:000> .writemem c:\foo.txt windbg L?0x1093000-windbg
Writing 93000 bytes…0:000>
r $t0 = windbg
0:000> .writemem c:\foo.txt $t0 L?0x1093000-$t0
Writing 93000 bytes…

0:000> .writemem c:\foo.txt 0x1000000 L?(0x1093000-windbg)
Writing 93000 bytes…

regards

raj_r

On 9/8/07, raj_r wrote:
> i dont think you can use double question marks on L like L??
>
> i mean i havent done it that way and according to the help file i
> think its just a single ?
>
> like L?0x99c60
>
> may be you could try r $t0 = trace####->tracehead
>
> L?$t0
>
> hope that helps
>
> raj_r
>
> On 9/8/07, Taed Wynnell wrote:
> >
> >
> > Maybe I’m doing something silly, but this looks like the ?? C++ Evaluation
> > operator isn’t getting along with the range syntax? (I’m using 6.7.5.1.)
> > Please point out the error of my ways, or maybe this is a bug or just
> > something that isn’t supported. Thanks!
> >
> > kd> ??((void *)Trace!traceDeviceExtension->pTraceBuffer)
> > void * 0x85892008
> > kd> ??(Trace!traceDeviceExtension->TraceHead)
> > unsigned long 0x996c0
> > kd> .writemem trace.2.log ??((void
> > *)Trace!traceDeviceExtension->pTraceBuffer)
> > L??(Trace!traceDeviceExtension->TraceHead)
> >
> > Syntax error at '??((void
> > *)Trace!traceDeviceExtension->pTraceBuffer) '
> > kd> .writemem trace.2.log 0x85892008
> > L??(Trace!traceDeviceExtension->TraceHead)
> > Syntax error at ‘?(Trace!traceDeviceExtension->TraceHead)’
> >
> > —
> > You are currently subscribed to windbg as: unknown lmsubst tag argument: ‘’
> > To unsubscribe send a blank email to
> > xxxxx@lists.osr.com
>

“raj_r” wrote in message news:xxxxx@windbg…
> i dont think you can use double question marks on L like L??

It’s not just the “L” portion; this also gives the same syntax error:
kd> .writemem trace.2.log ??((void
*)Trace!traceDeviceExtension->pTraceBuffer) L8
Syntax error at '??((void *)Trace!traceDeviceExtension->pTraceBuffer) '

if you need a pointer to be returned you would need @@c++

0:000> ?? testconhello!__newctype
unsigned short [384] 0x004015d8
0
0:000> .writemem c:\foo.txt @@C++(testconhello!__newctype) L8
Writing 8 bytes.

0:000> dd @@C++(testconhello!__newctype) L8
004015d8 00000000 00000000 00000000 00000000
004015e8 00000000 00000000 00000000 00000000

0:000> .shell dir c:\foo.txt
<.shell waiting 1 second(s) for process>
Volume in drive C has no label.
Volume Serial Number is 276D-07F3

Directory of c:\

09/09/2007 11:19 PM 8 foo.txt<.shell waiting 1
second(s) for process>

1 File(s) 8 bytes
0 Dir(s) 6,092,251,136 bytes free
<.shell process may need input>.shell: Process exited
Press ENTER to continue

hope that helps

regards

raj_r

On 9/9/07, Taed Wynnell wrote:
> “raj_r” wrote in message news:xxxxx@windbg…
> > i dont think you can use double question marks on L like L??
>
> It’s not just the “L” portion; this also gives the same syntax error:
> kd> .writemem trace.2.log ??((void
> *)Trace!traceDeviceExtension->pTraceBuffer) L8
> Syntax error at '??((void *)Trace!traceDeviceExtension->pTraceBuffer) '
>
>
>
> —
> You are currently subscribed to windbg as: xxxxx@gmail.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>

“raj_r” wrote in message news:xxxxx@windbg…
> if you need a pointer to be returned you would need @@c++

Actually, I ended up just changing the cases of ?? in my original commands
into @@ and it worked fine. I don’t understand why or what the difference
between the two is, but it worked.

Thanks.