TweetFollow Us on Twitter

Dec 95 Tips
Volume Number:11
Issue Number:12
Column Tag:Tips & Tidbits

Tips & Tidbits

By Steve Sisak, Contributing Editor

Note: Source code files accompanying article are located on MacTech CD-ROM or source code disks.

TIP OF THE MONTH

Arguments To “s” In MacsBug

In MacsBug, the s [step] command will take an argument which is either a count or a condition on which to stop. This can be very useful for unwinding a twisty bit of code. For example, if you keep crashing in a particular spot, but you can’t tell how you got there or what happened just before, you can break before everything goes wrong and type


  s (pc == <badspot>)

Where badspot is where you know things are wrong. Macsbug will step through all of the instructions in between here and there. You can then examine the path taken in the scrollback or, if you turn on the log first, look at it all offline with an editor. With the newest versions of MacsBug, you can even step over mixed mode. Note that it’s possible for find weirder problems, too:


 s (a0 == 0)

will step until a0 equals 0.

 

 s (<addr>^ != <current value>)

will step until the long at <addr> changes.

You can use this trick to find a really wide variety of problems. Should you use this tip, donate my fee to the American Red Cross.

- Tim Dierks

They Said I Couldn’t
Return Errors From Constructors

I have read several times that “you can’t return an error from a constructor”. This is not entirely true. See the following code example:

class exampleClass : parentClass
{
  exampleClass( int arg1, OSErr& errOut );
    // initialization constructor
...etc....
};

exampleClass::exampleClass( int arg1, OSErr& errOut )
 : parentClass()  // parent class constructor explicitly called
 , memberData() // instance variable's explict constructor
{
//  errOut = noErr;  see note #4 below
  errOut = someSystemCall( arg1 );
}

void main ( void )
{
   OSErr  err;
   exampleClass  aVar( 12, err );
   if ( err != noErr ) 
   {....etc....
}

This example “obviously” returns error information.

However, errOut will NOT have a known value if the following occurs:

1. parentClass’s explicit constructor throws an exception.

2. memberData’s explicit constructor throws an exception.

3. someSystemCall throws an exception. This example used explicit contructor calls, but the same is true for implicit constructor calls to parent classes and member data varables.

4. if the errOut = noErr line is uncommented, then at least errOut can have a known value in the absence of other exceptions.

Of course, since main isn’t doing try/catch, then the test of err != noErr is not going to happen when an exception occurs, either.

- C. Keith Ray

Is Your App Windowshade Savvy?

Many apps change the cursor within certain areas of their windows. This may be to provide the crosshairs in a drawing window, or a hand cursor if something can be dragged in an area of your window. Unfortunately, many applications forget to check whether their window is windowshaded or not. If their window is windowshaded but still the front window, they go ahead and change the cursor anyway, leading to the effect of the cursor changing over “empty space.” Looks ugly. Here’s the fix:

if (EmptyRgn( ((WindowPeek)TheWindow)->contRgn )) 
//window shade has been used

Don’t change the cursor;

else

Go ahead and change the cursor;

In the above example, TheWindow is the windowptr to the window who’s areas we are changing the cursor for.

- Richard Unger and Eric Bourque

Shortcut to Open Header Files In CodeWarrior

Here is a feature that I’d long hoped for, and recently, by accident, found.

In Metrowerk’s IDE, typing ‘command tab’ will open the corresponding .h or .cp file. For example, if you’re working in a source file named “FileName.cp” typing ‘command tab’ will open “FileName.h”. This is an extremely useful feature that I hope Symantec will adopt.

- Norman Basha

Drop Into MacsBug at a Predictable Address

When dropping into MacsBug, I often find myself in the wrong application’s code. For example, lets say I want to force-quit the finder using “es” from MacsBug. (command-option-escape will quit and then restart the Finder). To make sure the Finder is the frontmost app, I hold the mouse down in one of the Finder’s menus and press the interrupt key, and I’m dropped in at a known location (a small loop within the menu manager). Not only that, but the current menu manager is emulated on PowerMacs, further ensuring my safety. Then a simple “es” quits the Finder.

- Damon Cokenias

Lock Your Libraries, Prevent Changes

Here’s a tip that may be obvious, but it’s useful, if somewhat simple.

If you don’t want to modify the standard libraries included in a development environment (the source to PowerPlant or TCL for example) you can use the following script to lock all the files. I use this script in MPW, but should work with ToolServer as well:

### First set the current directory to the folder containing the sources 
to lock
### note that this script does sub-folders also.
### replace "xxx" with your path, e.g., "HD:MPW:Interfaces:"
directory "Full path to the folder in which the files are:"

### Then set the lock bit to ON for all files which are of
### type 'TEXT' in the current directory and all sub-directories
### Notes:
###   remove "-r" to skip sub-directories
###   make the "L" lowercase ("l") to un-lock files
###   the -f is for full paths, -s to supress directory listings
SetFile -a L `files -r -f -s -t 'TEXT'`

Anyway, just thought I’d pass it on. It’s particularly useful while using a class browser like Object Master, where you can browse all classes and it’s easy to end up editing one of the supplied classes in PowerPlant/Think Class Library/MacApp.

- Tyler Morrison

[AppleScript also supports locking and unlocking of files. Simply modify the “locked” property of x, where x is a file alias or file name with: set the locked of file x to true

EdAsst - jtk]

 
AAPL
$565.32
Apple Inc.
-5.24
GOOG
$603.66
Google Inc.
-5.80
MSFT
$29.07
Microsoft Corpora
-0.04
MacNews Search:
Community Search:
view counter

view counter
view counter
dockXtender
view counter
view counter
view counter
view counter
view counter
view counter

Empire of the Eclipse Review
Empire of the Eclipse Review By Carter Dotson on May 24th, 2012 Our Rating: :: OVERSHADOWINGiPhone App - Designed for the iPhone, compatible with the iPad Empire of the Eclipse is an ambitious strategy MMO that is very deep, and aimed at dedicated players.   | Read more »
Bejeweled HD Review
Bejeweled HD Review By Jennifer Allen on May 24th, 2012 Our Rating: :: ADDICTIVEiPad Only App - Designed for the iPad The iPad version of the ever addictive Match Three title.   Developer: PopCap Price: $3.99 Version Reviewed: 1.2 Device Reviewed On: iPad 2 | Read more »
Facebook Releases New Camera App To Stre...
While not a replacement for Instagram, Facebook Camera is a good first step in this month+ old union of the two companies. Released today, Facebook camera looks to streamline the viewing of photos and the uploading of them. The app allows you to apply simple filters to images, tag people, upload multiple images at once, and post a note about the... | Read more »
Missile Monkey Review
Missile Monkey Review By Lisa Caplan on May 24th, 2012 Our Rating: :: FLYING LOWUniversal App - Designed for iPhone and iPad Missile Monkey is a must miss   Developer: Munsey Clan Games Price: $0.99 Version Reviewed: 1.0 Device Reviewed On: iPad 2 | Read more »
Boomlings Review
Boomlings Review By Lisa Caplan on May 24th, 2012 Our Rating: :: FUN FREEBIEUniversal App - Designed for iPhone and iPad Boomlings is a traditional matching puzzle game, with some explosive twists   | Read more »
Dave vs Cave Review
Dave vs Cave Review By Jason Wadsworth on May 24th, 2012 Our Rating: :: WATCH FOR FALLING ROCKSUniversal App - Designed for iPhone and iPad Kid falls down hole, kid gets trapped in cave, kid fights evil rock monsters to escape.   Developer: Origame64 | Read more »
Python Pocket Power: Python Bytes 3 – Mo...
Python fans are certain to welcome the best bits from the penultimate season of the BBC sketch comedy in a new iPhone app: Python Bytes 3 – Monty Python Series 3. If you have a flair for the obvious, you’ll correctly assume this is third in a series of apps that feature the best skits from the cult-classic, Monty Python’s Flying Circus. | Read more »
Slingshot Racing Review
Slingshot Racing Review By Carter Dotson on May 24th, 2012 Our Rating: :: SWING ME AROUNDUniversal App - Designed for iPhone and iPad Slingshot Racing is a racing game where players must race around the courses by grappling and swinging around the slippery courses.   | Read more »
Go to the Cannes Film Festival with The...
For the movie industry the Cannes Film Festival is one of the most important events in which to preview films and watch the stars. The 65th annual festival is happening in France right now, but if you weren’t able to secure an invite or make the journey, hope is not lost. Film buffs and star gazers can keep tabs on the festival with The Hoolywood... | Read more »
David Haye’s Knockout Review
David Haye’s Knockout Review By Jennifer Allen on May 24th, 2012 Our Rating: :: PUNCHING FUNUniversal App - Designed for iPhone and iPad A simple yet satisfying cartoon-style boxing game.   | Read more »
All contents are Copyright 1984-2010 by Xplain Corporation. All rights reserved. Theme designed by Icreon.