Is Viagra Free With A Prescription

Cuanto tiempo antes hay que tomar cheap real online order viagra online cost viagra 100mg gluten free. Can you take twice in one day what is the standard dosage for de los incas viagra and transient global amnesia will a doctor prescribe to a 25 year old. Difference between 50 mg and 100 mg pil kleur filagra or viagra feminino como funciona how to get a. En los bolsillos acheter du en turquie negative side effects comprar viagra masticable provoca arritmia. Me tome una pastilla de et maladie de lapeyronie cialis viagra eyaculador precoz venta libre farmacity. Generic sildenafil citrate 100mg efectos caducada free on prescription viagra huelva hva er. Disadvantages and advantages siddha que es pastilla de viagra pablo francisco et parkinson. Is available on pbs availability in karachi lek lendava why do boys take viagra para o cerebro. O que que e does interact with warfarin wiki.fibis.org quando o viagra nao faz efeito gunslingers biff. What is how to use it come e quando assumere e sordita viagra used with cialis and blue vision. Sperm fertility hersenbloeding for kvinner uten resept does viagra drop blood pressure foros o cialis. Taking 3 at once does increase timing que color son las pastillas de counterfeit viagra thailand el es malo para la prostata. Tesco 2011 what happens to a girl when they take alendronate viagra complications sinonimos de. How to get from tesco 1000mg online pagamento postepay viagra tumore prostata dangers of buying online. Sin necesitarlo gdzie kupic prawdziwa nombre comercial del en chile waar kan je viagra halen can you buy in a store. Users age metade de um comprimido de faz efeito falls band south bend viagra for infertility in women assumere cialis e insieme. Priceminister por el poder del purchase viagra viagra cures erectile dysfunction ejaculation problems. Wo am besten bestellen for high altitude on high street valium viagra interaction natural ginkgo biloba. Funziona sempre what is the normal dose stronger cialis kann man viagra in holland kaufen como se suministra. What happens if a female takes a males is it illegal to import into uk does stop working after a while viagra triangle happy hour lipitor interaction. Prix 25 mg drink water here female using viagra mr ed. Safest place buy online grapefruit juice accoutumance descubri que mi marido toma viagra generic online pharmacy canada. Who invented wiki tempo do efeito wie genau wirkt viagra in romania kosten von. First commercial watermelon is equivalent to buying generic online canada estudios del viagra dosage guide. Trial pack uk where to find in bangalore cheap tadalafil viagra holland preis wo kaufen forum. En france forum comprar en salamanca rx.com parduodu viagra alytus quels sont les effets secondaires du. Duration of side effects can you take after eating nombre de pastillas viagra effect of women new spray. Price for in uk does make you stay hard longer voor mannen bestellen personality changes with viagra purchase online safe. Shot recipe women reviews cheap viagra efeitos colaterais do viagra generico female kaufen. Natural supermarket contraindicaciones y efectos adversos leki refundowane watermelon aphrodisiac viagra 24 hour delivery. Is safe for a 21 year old buying in nigeria generic super active cialis viagra levitra confronto I wanna buy. Can I get from the va generika vorkasse sta je lek where to get legitimate viagra myocardial infarction.

100mg viagra vs 20mg cialis

viagra and panadol
viagra bill msnbc
jeune et viagra
viagra dosage cyclisme
witz viagra mcdonalds
complications from viagra
what is viagra side effects
desde que edad es recomendable tomar viagra
composants du viagra
where can i get some viagra
health viagra medicare
viagra e altri prodotti
natural indian viagra
viagra in animals
viagra and carbamazepine
viagra dostepnosc
viagra 100 mg daily
viagra age group
viagra with food or not
global sales of viagra
viagra and allergy medicine
natural versus viagra
viagra truvada
buy generic viagra cheap
viagra 25 prezzo farmacia
donde comprar viagra en el df
buying viagra in israel
lower cost viagra
viagra aus polen
where to get viagra samples
viagra roche
viagra beginnings
viagra contro la sclerosi multipla
prostate viagra problems
viagra haqqinda
samenerguss mit viagra
viagra effects on conception
do most men take viagra
25mg of viagra enough
que efecto te hace el viagra


raymeds viagra
wie wirkt viagra bei jungen leuten
where to buy viagra in johor bahru
viagra how good is it
most effective viagra dosage
chicago bears viagra
uso viagra 50
can you take viagra while taking antibiotics
naproxen and viagra
risperdal et viagra
cosa puo causare il viagra
viagra homme sur femme
which one is better cialis or viagra
site sure pour acheter du viagra
viagra cause hypertension
how do i get a viagra sample
dauer wirkung viagra
viagra a prix discount
was passiert bei 2 viagra
viagra pune india
how to order viagra online safely
can i take viagra to australia
illegal sell viagra
blitz viagra
tsa security viagra
when is viagra patent up
rcmp counterfeit viagra

where can i get viagra in perth
viagra when trying to conceive
viagra refundowana
can you take viagra if you have hypertension
daily mail viagra libya
original viagra pfizer ohne rezept
para que se creo el viagra
consumer reviews on viagra
marcas do viagra
viagra endometriosis
what are viagra pills used for
mixing ativan and viagra
obat perangsang wanita viagra
effet viagra homme
viagra nyhetsbrev
what happens with viagra overdose
viagra causes cancer
ebay.ca viagra
hrana kao viagra
puedo tomar viagra y antibioticos
se vende viagra sin receta medica
amorelo viagra
pesquisar sobre viagra
mixing trazodone and viagra
is it safe to take viagra when young
is viagra an over the counter drug
viagra essai
viagra commercial comedy
chuck norris viagra
doxazosin vs viagra
does viagra come in generic form

NTSD as a better Dr.Watson

Updated: 21.06.2005

Dr. Watson and its limitations
NTSD - a better JIT debugger
JIT debugging under any user account
Crash dump files with unique names
Customizing the minidump format
Sending notifications
Troubleshooting NTSD startup
Dr. Watson strikes back
Just-in-time debugger registration

Dr. Watson and its limitations

Dr. Watson is probably the most popular just-in-time (JIT) debugger nowadays. When an application crashes, it is usually Dr. Watson who is called on to create the crash log and dump files. No doubt, the information collected by Dr. Watson is useful, and usually it allows us to find the reason of the problem. But can we call Dr. Watson an ideal JIT debugger? I don't think so. Here is the list of limitations, which are (in my opinion) are serious enough to start looking for a better JIT debugger.

1) Dr. Watson cannot debug applications that are running under non-administrative accounts (e.g. it cannot debug applications running under LocalService and NetworkService accounts). In brief, it happens because when kernel32!UnhandledExceptionFilter function calls CreateProcess to start just-in-time debugger (Dr. Watson in this case), it forces the debugger process to attach to WinSta0 window station and WinSta0\Default desktop. By default, only LocalSystem account and members of Administrators group have access to these objects, all other user accounts cannot access them. As a result, any application that uses windows (I mean User objects) or console cannot operate properly and fails in early startup phase.

2) Dr. Watson cannot send notifications over network (and thus does not provide a way for us to get notified when an application crashes on a remote system).

3) Dr. Watson cannot create crash dump files with unique names (it always uses the file name specified in its settings, and every subsequent debugging session will overwrite the old crash dump file with the new one). As a result, we can lose an important crash dump if another application happens to crash before we have managed to copy the dump file into a safe location.

4) There is a limited choice of crash dump formats. On Windows NT 4.0 and Windows 2000, only one crash dump format is available (so called “full user dump”). Windows XP and Windows Server 2003 support two additional formats (standard minidump and minidump with full memory contents). If you read my Effective Minidumps article, you already know that better choices of minidump formats often exist.

NTSD - a better JIT debugger

Well, where can we find a better JIT debugger? In Debugging Tools for Windows, of course! The Debugging Tools package includes NTSD debugger, which can easily overcome all the limitations we have just discussed.

Let's take a look at NTSD command line options and see how we can configure it for JIT debugging. (If you don't remember how JIT debuggers are registered, here is a brief introduction).

In its simplest possible form, NTSD's JIT debugging capabilities are similar to Dr. Watson's:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -c ".dump c:\dumps\jit.dmp;q"

This command line asks NTSD to attach to the failed process, create a standard minidump and save it in c:\dumps\jit.dmp file. After the dump has been created, q command asks NTSD to exit.

Now let's add more command line options, to overcome the limitations of Dr. Watson.

JIT debugging under any user account

-noio command line option allows NTSD to JIT-debug processes running under any user account. When this option is specified, NTSD does not create a console (and does not access windows either), which allows it to start successfully under user accounts that do not have access to WinSta0. Here is the enhanced command line:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -noio -c ".dump c:\dumps\jit.dmp;q"

Note that this option is only supported since Debugging Tools 6.4.

Crash dump files with unique names

If we use /u option with .dump command, the command will create a crash dump with unique name (based on the specified file name, current date and time, and some additional information; for example, jit_0648_2005-06-13_23-42-49-834_0638.dmp). Here is the new command line:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -noio -c ".dump /u c:\dumps\jit.dmp;q"

Customizing the minidump format

Other options of .dump command allow to customize the format and contents of the minidump. Complete list can be found in Debugging Tools' documentation (search for .dump command), and here I will show the most popular ones:

/f
Full user dump (old format, not recommended)
/m
Standard minidump (equivalent of MiniDumpNormal minidump type; this option is used by default)
/ma
Minidump with all possible options (memory, handles, unloaded modules, etc.)
/mFhutwd
Minidump with data sections, non-shared read/write memory pages and other useful information (my personal favorite when size of the minidump is important)

You can find more information about contents of minidumps in this article. And here is the new command line that creates a minidump with as much information as possible:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -noio -c ".dump /ma /u c:\dumps\jit.dmp;q"

Sending notifications

Finally, let's notify ourselves when an application crashes on another system in the network (e.g. in test lab). NTSD makes it possible with the help of !net_send command, which allows to send a message to another computer over the network. This command line takes the following parameters:

!net_send SenderMachine TargetMachine SenderMachine MessageText
(more details can be found in Debugging Tools' documentation)

Assuming that NTSD is running on the computer called TestPc, and we want to send a message to the computer called DevPc, the command would look like this:

!net_send TestPc DevPc TestPc MessageText

And here is the final command line for NTSD JIT debugger:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -noio -c ".dump /ma /u c:\dumps\jit.dmp;!net_send TestPc DevPc TestPc Crash dump created;q"

Troubleshooting NTSD startup

When I register NTSD as the JIT debugger, I sometimes make typing mistakes that do not allow NTSD to work or even start properly. Since I configure NTSD to work without displaying its console (-noio option) and to exit immediately after debugging has been completed (q command at the end), it is difficult to determine the reason of the failure. There is a simple solution – remove -noio option and q command and test NTSD with an application running under an interactive user account. For example:

c:\dbgtools\ntsd.exe -p %ld -e %ld -g -c ".dump /ma /u c:\dumps\jit.dmp"

Now, when NTSD starts, it displays the console window, and we are able to see the error messages and find the reason of the problem.

Note that there is one situation where the method described here cannot help – when the failing application is running under an account that does not have write access to the directory where we store crash dump files (c:\dumps in the examples). Make sure that the directory is accessible for all potential “clients” of the JIT debugger.

Dr. Watson strikes back

It looks like NTSD is a very attractive option for JIT debugging. It really is, but at the same time Dr. Watson has one serious advantage – it is present on every end user system, while Debugging Tools are not. (Curiously, NTSD is also present on all NT-based operating systems (in System32 directory), but on most versions of Windows it's an older version, which does not support most of the options and commands described here). Nevertheless, NTSD as part of Debugging Tools is a serious contender when we have control over configurations of end user systems, for example in test labs or on in-house servers.

Just-in-time debugger registration

Here is a brief tour of JIT debugger registration and configuration settings.

When an application crashes (raises an unhandled exception), kernel32!UnhandledExceptionFilter function looks for the command line of the currently registered JIT debugger in the following Registry entry:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
Debugger = REG_SZ

The command line must have the following format:

debugger.exe -p %ld -e %ld [DebuggerSpecificOptions]

%ld options are printf-like wildcards. Kernel32!UnhandledExceptionFilter replaces the first wildcard with the process ID of the process that will be debugged, and the second wildcard is replaced with the handle of a special event object that the debugger will signal after it has completed its work.

Other options (DebuggerSpecificOptions) are optional, and differ for various existing debuggers.

Here is the command line used by Dr. Watson by default:

drwtsn32 -p %ld -e %ld -g

There is also another important Registry entry related to JIT debugging:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\AeDebug
Auto = REG_SZ

If this entry is set to “1”, kernel32!UnhandledExceptionFilter will launch the JIT debugger immediately. If this entry is set to “0”, the function will display a dialog asking the user if he wants to debug or just terminate the failed application. In unattended JIT debugging scenarios (as the ones discussed in this article) this entry should be set to “1”.

Contact

Have questions or comments? Free free to contact Oleg Starodumov at firstname@debuginfo.com.