370 likes | 471 Vues
Learn how to solve permission, protocol, DLL, and COM object problems in ColdFusion using freeware tools and techniques. Explore debugging strategies for Windows NT servers.
E N D
eXtreme Debugging!(with apologies to Kent Beck, et al) David T Watts CTO Fig Leaf Software 30 Jul 2000
What is eXtreme Debugging? • For the purposes of this demonstration, it’s debugging problems external to CF. • Many common problems can’t 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.
What we’ll look at • OS permissions problems • HTTP & FTP protocol problems • Problems with external DLLs • Testing COM objects • Help Resources
OS permissions problems • Most commonly encountered when using IIS to control access via file ACLs • Example:virtual server authentication • Problem:Multiple web server authentication prompts; after several tries, access is allowed, but application doesn’t work correctly.
Permissions problems, cont’d • Cursory glance at directory ACLs looks correct: authtest1 allows anonymous user, authtest2 allows DAVE\Users
Permissions problems, cont’d • 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.
HTTP & 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.
HTTPAnalyzer • 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.
Telnet • 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.
Netcat • Common Windows telnet clients don’t work very well, and can’t 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.
Netcat, cont’d • Netcat usage:nc [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
Netcat, cont’d • Using Netcat as a client: This example pipes a text file of HTTP request headers to Netcat.
Netcat, cont’d • 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.
Recording 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.
Recording proxies, cont’d • 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.
Recording proxies, cont’d • 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.
Working 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.
External DLLs, cont’d • 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.
Testing 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 object’s 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.
Help resources • Beyond the standard resources for CF, there are several that are useful to CF developers on NT.
Help resources, cont’d • 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/
General 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?”).
General advice, cont’d • 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 they’re 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.
That’s 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 Watts:dwatts@figleaf.com • Thanks, and have a nice day!