Title: eXtreme Debugging with apologies to Kent Beck, et al
1eXtreme Debugging!(with apologies to Kent Beck,
et al)
- David T Watts
- CTO
- Fig Leaf Software
- 30 Jul 2000
2What is eXtreme Debugging?
- For the purposes of this demonstration, its
debugging problems external to CF. - Many common problems cant be identified from
within CF. - This presentation will examine how to solve
common problems using third-party freeware and
shareware tools. - This presentation focuses on NT, but there are
analogues for Solaris, etc.
3What well look at
- OS permissions problems
- HTTP FTP protocol problems
- Problems with external DLLs
- Testing COM objects
- Help Resources
4OS permissions problems
- Most commonly encountered when using IIS to
control access via file ACLs - Examplevirtual server authentication
- ProblemMultiple web server authentication
prompts after several tries, access is allowed,
but application doesnt work correctly.
5Permissions problems, contd
- Cursory glance at directory ACLs looks correct
authtest1 allows anonymous user, authtest2 allows
DAVE\Users
6Permissions problems, contd
7Permissions problems, contd
8Permissions problems, contd
- For a quick determination of file ACL problems,
you can use the freeware NT File Monitor, from
www.sysinternals.com. Registry permissions
problems can be diagnosed with the NT Registry
Monitor, also freeware.
9Permissions problems, contd
10HTTP FTP protocol problems
- Some problems between client and server require
viewing raw headers and data. - Problems may occur between end-user and server,
or between one server acting as a client and
another server.
11HTTPAnalyzer
- HTTPAnalyzer is a freeware Windows tool from
http//www.coolfusion.com/ which shows HTTP
request and response headers. Easy to use and
effective for simply looking at headers.
12HTTPAnalyzer
13Telnet
- Telnet is available on practically every
TCP/IP-networked computer. - Telnet can be used to build custom HTTP requests
and view and log responses. - Some telnet clients can be scripted.
14Telnet
15Netcat
- Common Windows telnet clients dont work very
well, and cant be scripted. - Netcat, available for NT from http//www.l0pht.com
/weld/netcat/ can be used to perform the same
tasks as telnet, and more. - Netcat can redirect to and from files, and can be
used to act as an HTTP client or server.
16Netcat, contd
- Netcat usagenc switches IP addr/host port
- Switches-d detach from console-e execute
(followed by command)-l listen-L listen and
restart after termination-p listening port-t
perform telnet negotiation-v verbose
17Netcat, contd
- Using Netcat as a client This example pipes a
text file of HTTP request headers to Netcat.
18Netcat, contd
19Netcat, contd
20Netcat, contd
- Netcat can also be used as a server this is
useful for determining problems with file uploads
and proprietary plugins. In this example, Netcat
will return an HTTP response to any request on
port 81.
21Netcat, contd
22Netcat, contd
23Recording proxies
- Recording proxies allow the easy capture of
multiple requests/responses between client and
server. - Typically, a recording proxy requires that you
modify the request to pass through the proxy.
24Recording proxies, contd
- Freeware HTTP and FTP recording proxies are
available from http//www.compansr.demon.co.uk/.
These proxies are Perl scripts, and require that
Perl be installed on the machine that will act as
the proxy (typically the requesting client). - These scripts record request headers, but not
request bodies.
25Recording proxies, contd
26Recording proxies, contd
27Recording proxies, contd
- Load-test tools can also generally be used as
recording proxies this is often how the load
test script is created. These will record headers
and bodies.
28Working with external DLLs
- A DLL, such as a CFX component, working on one
machine may not work on another for no apparent
reason. - Typically, this is caused by a dependency on a
library found on the working machine, but not on
the other.
29External DLLs, contd
- You can use Dependency Checker (depends.exe) to
determine what files are needed. - Dependency Checker is available in the Windows NT
Resource Kit, Windows 2000 Support Tools (on the
Win2K CD), and in Visual Studio.
30Dependency Checker
31Testing COM objects
- Many, but not all, COM objects can be used from
CF. - COM objects often come with ASP sample code, but
this ASP code may hide some of the complexity
behind the objects usage (ex authentication). - To separate object testing from web server
issues, use Windows Script Host to automate the
object, then convert the WSH test to CF
iteratively.
32Testing COM objects, contd
33Help resources
- Beyond the standard resources for CF, there are
several that are useful to CF developers on NT.
34Help resources, contd
- Windows NT/Windows 2000 Resource Kits
- IIS Resource Kit
- Windows 2000 Magazine Archive, available on CD
http//www.win2000mag.com/ - MSDN Library, available from Microsoft
- Microsoft Online Support http//support.microsoft
.com/
35General advice (a.k.a. common sense)
- Many problems require an approach outside of the
normal CF development process. - Very few problems, however, are new to you! Most
of them have existing solution processes. - Sometimes, the solution to a problem requires
recasting the problem to a different problem
domain in other words, looking at the process
(What am I trying to accomplish?) rather than
the implementation issues (how do I do x?).
36General advice, contd
- A competent CF developer needs to know more than
just CF and SQL. - Beyond development skills, CF developers need to
have a basic understanding of the OS theyre
using, TCP/IP networking, and the HTTP protocol,
among other things. - Iterative solutions make problem-solving easier.
- Problems that are purely CF problems can easily
be tested by any competent CF developer.
37Thats all, folks!
- This presentation will be available Monday from
the CFUG section of the Fig Leaf site, and should
be available from the CFUN2K site as well. - If there are any questions, please contact Dave
Wattsdwatts_at_figleaf.com - Thanks, and have a nice day!