Debugging Applications for Microsoft .NET and Microsoft Windows: Notes-Books

Software Development

  • Code Complete by Steve McConnell (Microsoft Press, 1993)

    This is simply the best book on software construction that I've ever read. Every developer should own a copy and read it cover to cover every year. After reading it annually for nine years, I'm still learning things from this book!

  • Rapid Development by Steve McConnell (Microsoft Press, 1996)

    This book taught me how to manage teams and schedule projects.

  • Debugging the Development Process by Steve Maguire (Microsoft Press, 1994)

    This book is a great introduction to the way Microsoft develops software. Obviously, since Microsoft is the most successful software company on the planet, they must be doing something right. You can learn a great deal from this book.

  • Dynamics of Software Development by Jim McCarthy (Microsoft Press, 1995)

    This book is a very interesting look at software development from the perspective of a manager with a track record for shipping great products. The rules Jim proposes are excellent because they all come from actual experience; he's not just some academic theorizing.

  • Under Pressure and On Time by Ed Sullivan (Microsoft Press, 2001)

    Ed's the great project manager from whom I stole most of my ideas about how to deliver software. This book discusses real-world project management and how Ed built great teams that delivered great products consistently and always on time. Also, the guy who wrote the forward is probably the sexiest developer working today.

  • he Career Programmer: Guerilla Tactics for an Imperfect World by Christopher Duncan (APress, 2002)

    All the books on software development address only the manager's perspective. It's about time someone wrote a book for the developers in the trenches! Chris covers tactics and techniques that enable you to concentrate on getting your job done even when your manager might be an idiot.

  • Writing Secure Code, Second Edition, by Michael Howard and David LeBlanc (Microsoft Press, 2002)

    With security in the forefront of everyone's mind, all developers need to have this book in their collections. Not only does it do a fantastic job of introducing the issues, it's chock full of real-world recommendations and examples of what you need to do in your software.

  • Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug (New Riders, 2000)

    Everyone is a user interface expert, and this is especially so the higher up the food chain you go in your development shop. This outstanding book discusses real-world Web page design and shows you the techniques necessary to ensure your designs actually work.

  • Philip and Alex's Guide to Web Publishing by Philip Greenspun (Morgan Kaufmann, 1999)

    If you're designing a Web site, you have to read this book. You might not agree with everything (I sure didn't), but it's one of the most cogent discussions of the issues surrounding how to keep users happy and how to develop Web sites people will come back to. Also, the photographs in the book are excellent. My father, a world class artist, can't seem to figure out why my books don't look so good.

  • High-Performance Client/Server by Chris Loosley and Frank Douglas (Wiley, 1998)

    This is a great book on designing performance into applications and has an especially excellent discussion of high-speed architectures.

  • Developing International Software, Second Edition by Dr. International (Microsoft Press, 2003)

    What's the old joke? A person who speaks three languages is trilingual, a person who speaks two is bilingual, and the person who speaks only one is American. Microsoft makes 60 percent of its revenue from outside the United States and you can too if you plan for it. This book shows you how to develop international applications for all of Microsoft's technologies.


    Debugging and Testing

    • The Practice of Programming by Brian W. Kernighan and Rob Pike (Addison-Wesley, 1999)

      This book is a wonderful discussion of developing, debugging, and testing.

    • Writing Solid Code by Steve Maguire (Microsoft Press, 1993)

      Although it focuses mainly on C programming, this book contains excellent advice on interface definitions and avoiding nasty problems in the language.

    • Managing the Testing Process by Rex Black (Microsoft Press, 1999)

      To develop better, you need to know how to test better. This excellent book will change the way you develop and the way you interact with your QA teams.

    • How Debuggers Work: Algorithms, Data Structures, and Architecture by Jonathan B. Rosenberg (John Wiley & Sons, 1996)

      This book is an excellent introduction to how debuggers work and to the issues you need to consider when designing a debugger.

    • Debugging Windows Programs: Strategies, Tools, and Techniques for Visual C++ Programmers by Everett N. McKay and Mike Woodring (Addison Wesley, 2000)

      Right after the first edition of the book you're reading now came out, Everett's and Mike's book showed up. It's a fantastic book, and I wish I'd thought of some of the great ideas they put in there, like how to think about debugging.

    .NET Technologies

    • Applied Microsoft .NET Framework Programming by Jeffrey Richter (Microsoft Press, 2002)

    • Applied Microsoft .NET Framework Programming in Microsoft Visual Basic .NET by Jeffrey Richter and Francesco Balena (Microsoft Press, 2002)

      Simply the best introduction to the insides of .NET. This is what all those thousands of "Introduction to .NET" books strive to do but fail miserably at doing.

    • Programming Microsoft .NET by Jeff Prosise (Microsoft Press, 2002)

      This is the perfect book to follow Jeffrey Richter's. Somehow Jeff managed to anticipate every single question I ever had about Microsoft ASP.NET and answer them all in his outstanding book.

    • .NET and COM: The Complete Interoperability Guide by Adam Nathan (Sams, 2002)

      If your .NET application is going to communicate outside the CLR to the big bad world of Windows or COM applications, this book is the bible you need to ensure that communication works.

    • Applied XML Programming for Microsoft .NET by Dino Esposito (Microsoft Press, 2002)

      XML is everywhere today, and Dino's book is an outstanding reference on digesting and emitting XML with Microsoft .NET.

    • .NET Enterprise Design with Visual Basic .NET and SQL Server 2000 by Jimmy Nilsson (Sams, 2002)

      Jimmy's book is one of the few books out there that concentrates on real-world development issues. It's a joy to read and to learn about how to apply many different aspects of real-world tools to solve problems.

    • Performance Testing Microsoft .NET Web Applications by Microsoft Application Consulting and Engineering (ACE) Team (Microsoft Press, 2003)

      Although .NET takes care of many programming chores for you, you're still responsible for performance. A great introduction to performance testing.

    • Inside Microsoft .NET IL Assembler by Serge Lidin (Microsoft Press, 2002)

      Although you'll probably never program in IL professionally, it sure is cool to know you can.

    C/C++ Language

    • The C Programming Language, Second Edition by Brian W. Kernighan and Dennis M. Ritchie (Prentice Hall, 1988)

      This book is the definitive guide to C programming and the best-written technical book I've ever read.

    • Learning C++ by Neill Graham (McGraw-Hill, 1991)

      I used this book to learn C++. Unlike other C++ doorstop books, Learning C++ is short, sweet, and to the point.

    • C++ Programmer's Guide to the Standard Template Library by Mark Nelson (IDG Books, 1995)

      I have an intense love-hate relationship with the Standard Template Library. Fortunately, Mark's book does a great job of providing samples and explaining the finer points of using this library.

    Windows and Windows Technologies

    • Programming Windows, Fifth Edition by Charles Petzold (Microsoft Press, 1999)

      This one book will teach you everything you need to know about how Windows programs work at the most fundamental level. People could solve many of the problems they ask me about if they only had a better understanding of how message handling, graphics device interface (GDI), and other subjects work at the Microsoft Win32 level.

    • Programming Applications for Microsoft Windows, Fourth Edition by Jeffrey Richter (Microsoft Press, 1999)

      This book covers all the unique aspects of Win32 development. The chapters on DLLs, threads, synchronization, and structured exception handling are the best descriptions available and all relate directly to debugging your problems more quickly and efficiently.

    • Programming Windows with MFC, Second Edition by Jeff Prosise (Microsoft Press, 1999)

      This book is the definitive guide to programming with the Microsoft Foundation Class (MFC) library. If you're using MFC, you must have this book.

    • Windows++: Writing Reusable Windows Code in C++ by Paul Dilascia (Addison-Wesley, 1992)

      Unlike other design books, which have only toy examples, this book produces a strong and viable C++ class library for Windows programming. I learn best by example, and this book taught me how to think in terms of objects.

    • Essential COM by Don Box (Addison-Wesley, 1998)

      In the Disassembly window ("unambiguous mode"), a COM interface is just a pointer to an array of pointers, so COM should be easy to understand. COM is so much more than just a pointer and is so fundamental to programming life, however, that you must understand how it works if you expect to stand a chance of correctly implementing and debugging your code. Don's book will give you a great start along the path of COM enlightenment.

    • Inside Microsoft Windows 2000, Third Edition by David A. Solomon and Mark E. Russinovich (Microsoft Press, 2000)

      The book is the official "big picture" view of the Microsoft Windows 2000 kernel. Although more directly applicable for device driver writers, this book will help you make sense out of how the different parts of the operating system fit together in Windows 2000.

    • Windows 95 System Programming Secrets by Matt Pietrek (IDG Books, 1995)

      Matt's book is out of print, but you should really try to find a copy. Debugging anything more than a simple access violation on Microsoft Windows 95 and Microsoft Windows 98 is an exercise in extreme frustration mainly because Windows 95 and Windows 98 are hybrid 16-bit/32-bit operating systems. Much of the information in the book, such as the Portable Executable (PE) file format chapter, applies to Windows 2000 as well.

    • ATL Internals by Brent Rector and Chris Sells (Addison-Wesley, 1999)

      The Active Template Library (ATL) makes the smallest and fastest COM objects around. To take full advantage of ATL, you have to have this book.

    • Programming Windows Security by Keith Brown (Addison-Wesley, 2000)

      Simply the best book on Windows security programming.

    • Programming Server-Side Application for Microsoft Windows 2000 by Jeffrey Richter and Jason D. Clark (Microsoft Press, 1999)

      If you're doing native server applications, you have to have this book. The section on scalable I/O is the best ever written.

    The Intel CPU and Hardware

    • Structured Computer Organization, Fourth Edition by Andrew S. Tanenbaum (Prentice-Hall, 1998)

      An excellent introduction to computer architecture, this book is filled with information that I use to debug problems daily. The book has some typos and technical errors, but if you can get past that you'll be glad you read it.

  • Intel CPU reference manuals

    Intel makes available, for free, the CPU manuals for their processors. If you're doing serious debugging, these manuals are extremely helpful and informative. You can download the Adobe PDF files from Intel's Literature Center at developer.intel.com/design/litcentr/index.htm. Intel also provides the manuals in book form if you prefer having hard copies.

    The Indispensable PC Hardware Book, Fourth Edition by Hans-Peter Messmer (Addison-Wesley, 2001)

    This book is the best discussion of PC hardware around. When you need to interact with hardware, this book is an invaluable resource.


 

Software Tools

  • Whole Tomato's Visual Assist (www.wholetomato.com)

    This is an excellent add-in to Microsoft Visual Studio .NET that extends the editor and puts in real IntelliSense and other advanced editing tools.

  • Source Dynamic's Source Insight (www.sourceinsight.com)

    If you need to see how large C++, C#, or Java programs fit together, this is the source browsing tool of choice.

  • Compuware DevPartner (www.compuware.com/products/numega)

    This is the suite that holds BoundsChecker (error detection), TrueTime (profiler), TrueCoverage (code coverage), CodeReview (static analysis), and Distributed Analyzer (cross-machine analysis). These tools all work for .NET as well as native code.

  • Bullseye Testing Technology's C-Cover (www.bullseye.com)

    This is a fantastic native C++ code coverage tool.

  • JPSoft's 4NT (www.jpsoft.com)

    This is the ultimate command shell for Windows machines. It's even got a debugger for batch files! On a fresh operating installation, it's the first program I put on the machine.

  • Jay Freeman's Anakrino (www.saurik.com/net/exemplar)

    This is the easy way to learn about .NET: decompile it!

  • Luts Roeder's Reflector (www.aisto.com/roeder/DotNet)

    Use this for a better ILDASM.

  • WiseOwl's Demeanor for .NET (www.wiseowl.com)

    This is Brent Rector's excellent code obfuscator.

  • MindReef's SOAPscope (www.mindreef.com)

    If you want to see what's happening with your Web services under the hood, you can't get any better than SOAPscope.

  • VMWare (www.vmware.com)

    Instead of having 300 machines in your test lab, buy a few big servers and run VMWare. I've seen several organizations save a ton of money by utilizing VMWare to cut down on hardware costs and yet increase their operating system testing coverage considerably.

Web Sites

  • MSDN Online (msdn.microsoft.com)

    MSDN is the first place to start looking for .NET and Windows information. MSDN Online can be accessed at the address I list as well as through the Microsoft-endorsed magazine MSDN Magazine. Keep in mind that MSDN is partly a marketing organization, so sometimes a little hype creeps into various pieces.

  • ASP.NET Web (www.asp.net)

    This Web site is the official home of the ASP.NET team at Microsoft. For the life of me, I can't figure out why Microsoft has this site outside of the MSDN umbrella.

  • Google Microsoft Search (www.google.com/microsoft.html)

    Although MSDN is the place to read about Microsoft technologies, its searching capabilities leave something to be desired. Fortunately, Google has a special search site that focuses only on Microsoft technologies. If you'd like to use the vaunted Google search on only the MSDN site, specify site:msdn.microsoft.com in your search string.

  • Sysinternals (www.sysinternals.com)

    Mark Russinovich and Bryce Cogswell have some of the best native debugging utilities around: Regmon, Filemon, DebugView, Process Explorer, and many more. Many utilities come with full source code, and all are free! I check Mark and Bryce's site at least once a week so that I can keep my competitive edge.

  • Russ Osterlund's SmidgeonSoft (www.smidgeonsoft.com)

    Russ has a collection of fantastic and free tools that rival those at Sysinternals. Not only is his PEBrowse Professional Interactive a native code debugger, it handles .NET debugging as well. If you want to see the insides of the operating system, Russ has you covered.

  • Code Project (www.codeproject)

    This is a great community site for both .NET and native development.

  • CodeGuru (www.codeguru.com)

    This is the granddaddy of Windows programming help sites. Now it does .NET, too!

  • VB2TheMax (www.vb2themax.com)

    This is the place to learn about Microsoft Visual Basic .NET.

  • Wintellect (www.wintellect.com)

    This is where I and all my Wintellectual friends hang out and answer (and post!) questions on our forums.

posted @ 2010-05-24 09:01  Freedom  阅读(1118)  评论(0编辑  收藏  举报