• MacTech Network:
  • Tech Support
  • |
  • MacForge.net
  • |
  • Apple News
  • |
  • Register Domains
  • |
  • SSL Certificates
  • |
  • iPod Deals
  • |
  • Mac Deals
  • |
  • Mac Book Shelf

MAC TECH

  • Home
  • Magazine
    • About MacTech in Print
    • Issue Table of Contents
    • Subscribe
    • Risk Free Sample
    • Back Issues
    • MacTech DVD
  • Archives
    • MacTech Print Archives
    • MacMod
    • MacTutor
    • FrameWorks
    • develop
  • Forums
  • News
    • MacTech News
    • MacTech Blog
    • MacTech Reviews and KoolTools
    • Whitepapers, Screencasts, Videos and Books
    • News Scanner
    • Rumors Scanner
    • Documentation Scanner
    • Submit News or PR
    • MacTech News List
  • Store
  • Apple Expo
    • by Category
    • by Company
    • by Product
  • Job Board
  • Editorial
    • Submit News or PR
    • Writer's Kit
    • Editorial Staff
    • Editorial Calendar
  • Advertising
    • Benefits of MacTech
    • Mechanicals and Submission
    • Dates and Deadlines
    • Submit Apple Expo Entry
  • User
    • Register for Ongoing Raffles
    • Register new user
    • Edit User Settings
    • Logout
  • Contact
    • Customer Service
    • Webmaster Feedback
    • Submit News or PR
    • Suggest an article
  • Connect Tools
    • MacTech Live Podcast
    • RSS Feeds
    • Twitter

ADVERTISEMENT

Volume Number: 13 (1997)
Issue Number: 4
Column Tag: Tips & Tidbits

Tips & Tidbits

By Steve Sisak

Debugging 68K Code Resources with MacsBug

I'm using a CDEF as an example here, but this technique can be quite useful in many situations.

I recently had the pleasure of writing a tiny application for an old client. There was actually more code in the custom CDEF than the app itself. Once it was all polished and "bug free" I took it to the client's site for a demo. Naturally, it crashed immediately on launch. Everything froze up and I had to do a hard reset. I strongly suspected my CDEF was the problem. Normally, I would put a DebugStr in the CDEF, recompile, and use MacsBug to find the problem. But this was a 4MB LCII. There was no chance of installing CodeWarrior and rebuilding the CDEF. However, the computer did have an old copy of ResEdit. The following is what I did.

1) I opened my application in ResEdit and used the GetInfo dialog to make my CDEF preloaded and locked. I then saved the file and quit ResEdit.

2) In MacsBug, I set an A-trap break on InitGraf.

atb _InitGraf

3) I launched my app. Since initializing QuickDraw is one of the first things my program does, my A-trap break fired and I dropped into MacsBug.

4) The MacOS automatically loads preloaded resources when the resource file is open, so I found my CDEF in memory and set a breakpoint. To find the resource, I typed "hd RS" (list all resources in the current heap).

The screen looked something like this

hd RS

Displaying the "Quick Launch" heap at 00192830

Start Length Tag Mstr Ptr Lock Prg Type ID

00194890 00000544 R 00192A00 L CODE 0001

00196872 00000A44 R 00192A04 L CDEF 0080

etc...

5) Since my CDEF was already loaded in memory, and locked down, I set a breakpoint at the beginning of the CDEF.

br 00196872

I then typed command-g to continue. My breakpoint was soon hit and the bug identified. I fixed the problem the next day and got paid. This technique can be used to set a breakpoint at the beginning of nearly any code resource.

Damon Cokenias
http://www.netgate.net/~cokenias

In the MacTech 13.02 (February 1997) we printed a tip from Bill Hayden that System 7.5.3 made it possible to navigate the Standard File dialog box by clicking items visible on the desktop. Since then, a number of readers have written to report they could not reproduce this behavior.

After trying a variety of system software releases, we have not found a publicly released version of the system exhibiting this behavior, although one reader has reported reproducing it on a version of System 7.5.3 release 2 but not 7.5.5.

We offer two possible explanations for the source of the tip. First is a freeware utility called "Click, there it is!", by Richard Cardona Utilities Group (now in version 1.0.7), which enables the behavior described in the tip. A second possible explanation is that the reported functionality may have been enabled in a developer release of system software, but removed from the final, public release.

In any case, we apologize for the error and thank everyone who took the time to report it, as well as those who have taken the time to submit tips - please keep them coming.

Best wishes,

--Steve

 
MacTech Only Search:
Community Search:

 
 
 

 
 
 
 
 
  • SPREAD THE WORD:
  • Slashdot
  • Digg
  • Del.icio.us
  • Reddit
  • Newsvine
  • Generate a short URL for this page:



MacTech Magazine. www.mactech.com
Toll Free 877-MACTECH, Outside US/Canada: 805-494-9797
MacTech is a registered trademark of Xplain Corporation. Xplain, "The journal of Apple technology", Apple Expo, Explain It, MacDev, MacDev-1, THINK Reference, NetProfessional, Apple Expo, MacTech Central, MacTech Domains, MacNews, MacForge, and the MacTutorMan are trademarks or service marks of Xplain Corporation. Sprocket is a registered trademark of eSprocket Corporation. Other trademarks and copyrights appearing in this printing or software remain the property of their respective holders.
All contents are Copyright 1984-2010 by Xplain Corporation. All rights reserved. Theme designed by Icreon.
 
Nov. 20: Take Control of Syncing Data in Sow Leopard' released
Nov. 19: Cocktail 4.5 (Leopard Edition) released
Nov. 19: macProVideo offers new Cubase tutorials
Nov. 18: S Stardom anounces Safe Capsule, a companion piece for Apple's
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live
Nov. 17: Ableton releases Max for Live