windbg - How to disable explicitly named exceptions in cdb in one command? -


the sx family of commands accept either name of exception/event, av, exception code or *.

the thing * catches unnamed exceptions. if want execute command when exception happens, explicitly named or not?

for instance,

sxe -c "bla-bla-bla" -c2 "ku-ku-ku" av sxe -c "bla-bla-bla" -c2 "ku-ku-ku" dz sxe -c "bla-bla-bla" -c2 "ku-ku-ku" * 

instructs debugger to:

  • execute bla-bla-bla command on first chance access violation
  • execute ku-ku-ku command on second chance access violation
  • execute bla-bla-bla command on first chance division zero
  • execute ku-ku-ku command on second chance division zero
  • execute bla-bla-bla command on unnamed first chance exception
  • execute ku-ku-ku command on unnamed second chance exception

but, there 2 dozens of named exception , if want these commands executed on each 1 of them seem expected repeat same sxe statement each of these exceptions, changing exception name.

is there better way it?

thanks.

edit1

here actual cdb script, use commands:

as adpdumpdir c:\logs\crash !adplusext.adpextstart adpdumpdir /c adpprocid !adplusext.adpprocid /c adphostcomputer !adplusext.adphostcomputer /c adptargetcomputer !adplusext.adptargetcomputer /c adpprocname !adplusext.adpprocname .logopen /t ${adpdumpdir}\${adpprocname}.log version al .symfix+ c:\users\markk\appdata\local\temp\symbolcache .sympath .reload exccode av excname accessviolation sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode asrt excname assertionfailure sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode aph excname applicationhang sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode eh excname c++eh sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode clr excname clr sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode clrn excname clrnotification sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode dm excname datamisaligned sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode gp excname guardpageviolation sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode ii excname illegalinstruction sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode ip excname inpageioerror sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode dz excname dividebyzero sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode iov excname integeroverflow sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode ch excname invalidhandle sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode lsq excname invalidlocksequence sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode isc excname invalidsystemcall sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode 3c excname portdisconnected sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode svh excname servicehang sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode sov excname stackoverflow sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode vs excname verifierstop sxe -c @".dump /u /ma /c firstchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_firstchance_${exccode}_${excname}_.dmp;gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} exccode vcpp excname visualc++ sxe -c "gn" -c2 @".dump /u /ma /c secondchance_${exccode}_${excname} ${adpdumpdir}\minidump_${adpprocname}_secondchance_${exccode}_${excname}_.dmp;gn" ${exccode} sxi bpe sxi wob sxi e06d7363 sxi e0434352 sxe -c "gn" -c2 @".dump /u /ma /c secondchance ${adpdumpdir}\minidump_secondchance_${adpprocname}_.dmp;gn" * sx g .logclose q 

i looking ways make shorter , simpler, if possible.

as far know, there no nice solution, can use hack:

.foreach(code {sx}) {.catch{sxe -c "bla-bla-bla" -c2 "ku-ku-ku" ${code}}} 

where {sx} list named exception codes , settings (which skipped later). code name of variable. .foreach(...) {...} processes output single words. sxe ... ${code} performs expected command , .catch{...} ignores errors (i.e. skips unwanted tokens).

with pykd can write python script bit more straight-forward:

from pykd import *  str = dbgcommand("sx") lines = str.split("\n") line in lines:     if ("-" in line) , not("command:" in line):         code = line.split("-")[0].strip()         dbgcommand("sxe -c \"bla-bla-bla\" -c2 \"ku-ku-ku\" " + code) 

Comments