TweetFollow Us on Twitter

Nov 99 Factory Floor

Volume Number: 15 (1999)
Issue Number: 11
Column Tag: Factory Floor

CodeWarrior in a Carbonized World

by Richard Atwell and Dave Mark

Back in August, our good buddy Richard Atwell gave us a glimpse of life with a Carbon-based CodeWarrior debugger. This month, Richard parts the curtains a bit more and talks about life with Mac OS 9 out the door and Mac OS X right behind.

Richard Alexander David Atwell, aka ratwell, is the Mac OS Debugger Engineer at Metrowerks. Richard collects vintage CodeWarrior CDs in his spare time. You can contact him about the DR/3.5 CD you'd like to send him at ratwell@metrowerks.com.

Dave: This past summer, you told us all about Metrowerks' debugger plans. Can you tell us what has happened since then?

Richard: Since the August interview, we've made tremendous progress on the Carbonized IDE. Now that Mac OS 9 has gone final, you can look forward to an update that has been built for Apple's latest OS release. The Mac OS X version is right behind it and we'll have a better idea of the release date once the next IDE update comes out and after Apple delivers another Mac OS X developer preview CD. Keep reading the Factory Floor to find out.

Dave: Given all the operating system compatibility issues that developers have to consider how many versions of the IDE are there going to be?

Richard: Just one. We've put a huge amount of effort into maximizing the experience and minimizing the adjustments that developers will have to make. To that end we're planning to deliver a single IDE binary that runs on Mac OS 8 through X. The IDE 4.0 from Pro5 supported the last version of System 7, Mac OS 7.6.1, mainly because of the MRJ minimum runtime requirements.

We're not sure how much longer we can continue to support pre-8 releases of the operating system. Our tools are no longer hosted on 68k and there will no doubt be compelling reasons to move the IDE forwards that will make backward compatibility difficult.

If you are familiar with Carbon development, you'll know that even if you decide to only target Carbon there are several development issues that crop up depending on how far back you want to support older operating systems. We believe that most of our developers keep up with OS updates but we also understand that being able to debug and develop on older systems is sometimes an important necessity. We'll support System 7 as long as we can.

Dave: What are the latest Factory Updates that have been released?

Richard: Before we delivered Pro 5 we announced that we were going to release annually instead of semi-annually. In between releases we promised to release updates to tools and libraries to address bugs and feature requests. We've done that recently with two Factory Updates: 5.1 and 5.2.

The first update contained a new IDE 4.0.1 and was released to address some outstanding IDE 4.0 bugs that we weren't able to fix before the Pro5 release. The 5.2 update contained updated compilers, MSL and an IDE 4.0.2.

We are excited about this approach because it returns us closer to our original release cycle. Up until CW11 we released every 4 months in an almost clockwerk like fashion but it became harder to maintain this release schedule as the IDE became larger and larger. So you can see we are going to be updating the tools just as often; we're just not pressing CDs as often.

Dave: I noticed that Pro 5 MetroNub isn't compatible with previous releases. What happened?

Richard: That was unfortunate. In order to add Mac OS X and AltiVec debugging support at the same time we were constrained to release a version of MetroNub that couldn't be installed and used with previous releases. This meant you couldn't install a single MetroNub extension and use Pro4-Pro1 debuggers or older Pro-based releases like our CodeWarrior tools for the Palm Computing Platform.

Dave: What good are the older releases?

Richard: Well, it depends. You may have older projects that you can't update because they are works in progress or you might be on a tight development schedule and unable to upgrade. You might prefer to debug your program on an older version of the system software using the standalone debugger, MW Debug, that last shipped with Pro 2.

In any case, Pro5 forced you to switch MetroNubs and reboot in order to switch tools. I've rewritten parts of MetroNub to bring backward compability so you can continue to mix the new tools with the older ones. This MetroNub has been beta tested by some brave individuals from the comp.sys.mac.programmer.codewarrior newsgroup and we will release this version in the next factory update.

Dave: There's more to CodeWarrior than just the IDE. Can you give us a rundown on the progress that has been made with the rest of the tool suite?

Richard: PowerPlant is the premier Macintosh framework. PowerPlant has been shipping on CodeWarrior since the DR/1 days thanks to the brilliant work of Greg Dow.

Lately, Greg has been carbonizing PowerPlant for use with the Universal Interfaces 3.3. Greg released a preliminary version to our beta testers and we are planning on releasing PowerPlant 2.1 in an upcoming Factory Update. Hopefully Greg will appear in a future column to explain all the goodies packed into the latest PowerPlant.

We write our tools using PowerPlant as the underlying framework. If you still haven't looked into PowerPlant you're missing out. Check it out.

Dave: What's happening with ZoneRanger?

Richard: ZoneRanger has been with us for a long time. Joshua originally wrote it as a shareware tool and we brought him on board to improve it for our Mac users. In fact you can still find an older version that we give away on the website.

You can use ZoneRanger 2.2 in order to help you understand how your program manages memory. Look inside the "Other Metrowerks Tools" folder for ZoneRanger and alongside it you'll also find a sample program called LeakyApp. It's very instructional to watch LeakyApp trigger events in ZoneRanger based on actions you select from the menus in LeakyApp.

LeakyApp was built with a file called ZoneRanger.c that you'll need to add to your project. This C file works it's magic by replacing memory allocators in MSL that register the blocks of memory in a way that the ZoneRanger application can record. In order to do this you must alter the link order of your project so ZoneRanger.c links before any of the MSL C libraries in your project. Look for linker warnings telling you that some of the allocators were previously defined in ZoneRanger.c and you'll know you are on the right track.

In previous releases ZoneRanger's recording mechanism was built in the MSL libraries and turned on by default in Pro 4. This slowed down release versions of programs a little that didn't even care about memory management so we moved it outside of MSL.

You can learn more about ZoneRanger by reading the manual located on the CodeWarrior Reference CD.

Dave: I've used the Profiler before to speed up my programs. What's changed?

Richard: The MW Profiler 1.7 that Steve and Neal wrote is essentially the same one we've shipped for several releases. Users complained that because the icon was the same as the IDE it was difficult to select the right application from the tear off application menu that appears in Mac OS 8.5 when neither the IDE nor the Profiler were the foreground application. We changed the icon with Pro 5 so they won't get confused.

We've also added two features to the Pro5 version. The first is the ability to accurately profile the time that threads are using. Previous versions miscalculated the time threads were asleep so you couldn't really profile your threads. Now this is fixed you'll be able to fine-tune your application even further.

The second thing we did was to add capability into the Profiler to analyze the data that the profiler libraries generate and feed this information back into the linker. Why would you want to do this? One good reason is VM. Without going into a lengthy discussion about operating systems, when virtual memory is on, your program is residing on disk and parts of it are swapped into memory as the OS deems necessary. It does this in order to execute it and maximize the use of memory between multi-tasking programs. Functions in memory that call functions that are not in memory have to be loaded first and this is time consuming because disk drives are so much slower than memory. All this happens in the background without any control by the running program so you probably didn't realize that you could do anything about it.

Between the CPU and the disk t RAM and fast cache memories exist and as a general rule the more you can execute within the context of the cache the faster your programs will run.

Towards this end the Profiler can now write out one of two kinds of .arr files. These are called arrange files and they contain lists of functions that are given to the linker in order to instruct the linker to organize the functions so the ones that call each other frequently are proximally close to each other. This can reduce the time that the OS wastes going to disk to retrieve functions to be called. Because programs don't call all programs with the same frequency you can see how optimizing the layout of the binary can speed up the program.

To set up your project this way, go to the PPC PEF preference panel, set the code sorting popup to read "Use .arr file" and add your arrange file to the project. You've been able to manually create this file yourself with the last few compiler releases but now we have a tool that can generate it for you based on the way your program actually behaves.

Dave: Is the Find Library new?

Richard: The Find Library is a set of text files that MWRon produces. MWRon is our ombudsman in the newsgroups. Ron got tired of answering questions that explained which libraries contained what API call so he disassembled all the libraries and stripped them off all the "junk" leaving only the name tables.

You can open CodeWarrior's Find Dialog, drop all Find Libary files on it, and search for the library that contains the function you are looking for. Then you just add the library that matches the name of the disassembled file MWRon created to your project to remove any linker errors.

MWRon updates this set of files each release to match the latest Universal Interfaces from Apple.

Dave: We talked about MetroNub Remote in our last chat (The Factory Floor, August 1999).

Richard: That hasn't changed since Pro 5. We'll update it for a future release. Many networking improvements will come from the MetroNub plugin and extension release that I said was forthcoming.

MetroNub will continue to evolve as the OS evolves. As long as we can continue to make MetroNub and MetroNub Remote run on older system you'll be able to debug anywhere the IDE can't run.

There's a hidden treat in the Metrowerks CodeWarrior folder. Look inside the (Debugger Extras) folder and you'll find a folder called MetroNub Utilities. This folder contains a C file and instructions to allow your project to determine if it is being debugged by the IDE. You may want to know this in order to call DebugStr or take some action to help you debug your program when you know it's under the control of the debugger.

We used to have a co-existing file called MWDebugUtils on the reference CD but it became obsolete when the debugger became integrated into the IDE.

Dave: DebugNew is a hidden treasure. Why is it hiding in the Mac OS Support folder?

Richard: DebugNew used to be hidden inside the Libraries sub-folder of Mac OS Support so we moved it up so users could find it easier.

DebugNew is a another memory tool like ZoneRanger but it is designed to be used only in debug versions of your program. If you are writing programs in C++ you can add DebugNew to your project and use it to track memory leaks, memory overwrites that occur when you use new, delete, new[] and delete[].

You can find instructions on how to use it in the manuals on the Reference CD.

Dave: What can you tell me about the ways in which I can customize CodeWarrior with third-party tools?

Richard: Several ways: you can replace a CodeWarrior plugin with a third-party compiler but there are other options as well.

Locate these three folders in the Metrowerks CodeWarrior folder:

(Editor Extensions)
(Scripts)
(ToolServer Tools)

The first one is for BBEdit[TM] Extensions. BBEdit[TM] is a full featured editor that comes with several plugins called extensions to automate editing. You can use these from CodeWarrior by placing the extensions in the shielded folder and turn on the "Use BBEdit[TM] Extensions" option in the IDE Extras preference panel. When you do, an extra menu will appear in the menubar that displays the names of the extensions that are in the folder. The menu shows up as an icon so it's easy to recognize.

The Scripts folder allows you to access AppleScripts and execute them from within the context of the IDE. You can write scripts that drive the project engine or modify the text of your source code. Take a look at some of the example scripts we're already written and placed in that folder. You will need to turn this feature on from the IDE Extras preference panel also.

The last folder contains a text file with instructions for enabling the ToolServer window from within the IDE. ToolServer is part of MPW and is located within the CodeWarrior MPW folder. When properly installed, you can execute MPW tools from a CodeWarrior window. If there's a feature you've been looking for us to implement you'll probably be able to find it in the form of an MPW tool.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Capto 1.2.9 - $29.99
Capto (was Voila) is an easy-to-use app that takes capturing, recording, video and image editing to the next level. With an intelligent file manager and quick sharing options, Capto is perfect for... Read more
Opera 51.0.2830.40 - High-performance We...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
GarageSale 7.0.13 - Create outstanding e...
GarageSale is a slick, full-featured client application for the eBay online auction system. Create and manage your auctions with ease. With GarageSale, you can create, edit, track, and manage... Read more
1Password 6.8.7 - Powerful password mana...
1Password is a password manager that uniquely brings you both security and convenience. It is the only program that provides anti-phishing protection and goes beyond password management by adding Web... Read more
Evernote 7.0.1 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
MacUpdate Desktop 6.2.0 - $20.00
MacUpdate Desktop brings seamless 1-click app installs and version updates to your Mac. With a free MacUpdate account and MacUpdate Desktop 6, Mac users can now install almost any Mac app on... Read more
HoudahSpot 4.3.5 - Advanced file-search...
HoudahSpot is a versatile desktop search tool. Use HoudahSpot to locate hard-to-find files and keep frequently used files within reach. HoudahSpot will immediately feel familiar. It works just the... Read more
EtreCheck 4.0.4 - For troubleshooting yo...
EtreCheck is an app that displays the important details of your system configuration and allow you to copy that information to the Clipboard. It is meant to be used with Apple Support Communities to... Read more
WhatsApp 0.2.8361 - Desktop client for W...
WhatsApp is the desktop client for WhatsApp Messenger, a cross-platform mobile messaging app which allows you to exchange messages without having to pay for SMS. WhatsApp Messenger is available for... Read more
iClock 4.2 - Customize your menubar cloc...
iClock is a menu-bar replacement for Apple's default clock but with 100x features. Have your Apple or Google calendar in the menubar. Have the day, date, and time in different fonts and colors in the... Read more

Latest Forum Discussions

See All

Alto's Odyssey Guide - How to Tackl...
Alto’s Odyssey is a completely stunning and serene runner, but it can also be a bit tricky. Check out these to try and keep your cool while playing this endless runner: Don’t focus too much on tasks [Read more] | Read more »
Here's everything you need to know...
Alto's Odyssey is a really, really good game. If you don't believe me, you should definitely check out our review by clicking this link right here. It takes the ideas from the original Alto's Adventure, then subtly builds on them, creating... | Read more »
Alto's Odyssey (Games)
Alto's Odyssey 1.0.1 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.1 (iTunes) Description: Just beyond the horizon sits a majestic desert, vast and unexplored. Join Alto and his friends and set off on an endless... | Read more »
Vainglory 5v5: Everything you need to kn...
Vainglory just got bigger. [Read more] | Read more »
Check out these 5 games that are a lot l...
So you're in love with Minecraft, but you're looking for something else to play as well? You've come to the right place then, because this list is all about games that are a bit like Minecraft. Some of them, more than others. [Read more] | Read more »
Our top 5 characters from casual RPG Cre...
Creature Quest definitely lives up to its name with a host of collectible creatures based on fantasy tales and world mythologies. To celebrate Creature Quest’s first birthday, we’re going to lay out what we think are the five best characters in the... | Read more »
Around the Empire: What have you missed...
Did you know that Steel Media has a whole swathe of other sites dedicated to all aspects of mobile gaming? Sure you'll get the very best iPhone news, reviews, and opinions right here at 148Apps, but we don't want you missing out on a single piece... | Read more »
All the best games on sale for iPhone an...
Oh hi there, and welcome to our round-up of the best games that are currently on sale for iPhone and iPad. You thought I didn't see you there, did you, skulking behind the bushes? Trust me though, the bushes aren't where the best deals are. The... | Read more »
The Battle of Polytopia Guide - How to H...
A new update just released for The Battle of Polytopia (formerly Super Tribes), which introduces online multiplayer. For all the fans of Midjiwan’s lite take on Civilization, this is certainly welcome news, but playing online isn’t as easy and... | Read more »
The best games that came out for iPhone...
Another week, another bunch of new releases on the App Store, another update to our big list of new games. It's not a classic lineup this week, but there are some really good ones in the mix all the same. [Read more] | Read more »

Price Scanner via MacPrices.net

Amazon restocks MacBook Pros with models avai...
Amazon has restocked 15″ and 13″ Apple MacBook Pros with models on sale for up to $251 off MSRP. Shipping is free. Note that stock of some Macs may come and go (and some sell out quickly), so check... Read more
Lowest price of the year: 15″ 2.8GHz Apple Ma...
Amazon has the 2017 Space Gray 15″ 2.8GHz MacBook Pro on sale today for $251 off MSRP. Shipping is free: – 15″ 2.8GHz Touch Bar MacBook Pro Space Gray (MPTR2LL/A): $2148, $251 off MSRP Their price is... Read more
Apple restocks full line of Certified Refurbi...
Apple has restocked a full line of Apple Certified Refurbished 2017 13″ MacBook Pros for $200-$300 off MSRP. A standard Apple one-year warranty is included with each MacBook, and shipping is free.... Read more
Lowest sale price available for 13″ 1.8GHz Ma...
Focus Camera has the 2017 13″ 1.8GHz/128GB Apple MacBook Air on sale today for $829 including free shipping. Their price is $170 off MSRP, and it’s the lowest price available for a current 13″... Read more
21-inch 2.3GHz iMac on sale for $999, $100 of...
B&H Photo has the 2017 21″ 2.3GHz iMac (MMQA2LL/A) in stock and on sale for $999 including free shipping plus NY & NJ tax only. Their price is $100 off MSRP. Read more
Apple refurbished Mac minis in stock again st...
Apple has restocked Certified Refurbished Mac minis starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: – 1.4GHz Mac mini: $419 $80 off MSRP – 2.6GHz Mac... Read more
Tuesday MacBook Deals: $250 off 15″ 2.9GHz Ma...
Adorama has the Silver 15″ 2.9GHz Apple MacBook Pro on sale today for $250 off MSRP. Shipping is free, and Adorama charges sales tax for residents in NY & NJ only: – 15″ 2.9GHz Silver MacBook Pro... Read more
Save up to $350 with these Apple Certified Re...
Apple has a full line of Certified Refurbished iMacs available for up to $350 off original MSRP. Apple’s one-year warranty is standard, and shipping is free. The following models are available: – 27... Read more
B&H offers $200 discount on Silver 15″ Ma...
B&H Photo has Silver 15″ Apple MacBook Pros on sale for $200 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 15″ 2.8GHz Touch Bar MacBook Pro Silver (... Read more
12″ Apple iPad Pro Sale of the Year! Models u...
B&H Photo has 12″ #iPad Pros on sale for up to $150 off MSRP. Shipping is free, and B&H charges sales tax in NY & NJ only: – 12″ 64GB WiFi iPad Pro: $719 $80 off MSRP – 12″ 256GB WiFi... Read more

Jobs Board

*Apple* Retail - Multiple Positions - Apple,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Sr. Experience Designer, Today at *Apple* -...
# Sr. Experience Designer, Today at Apple Job Number: 56495251 Santa Clara Valley, California, United States Posted: 18-Jan-2018 Weekly Hours: 40.00 **Job Summary** Read more
*Apple* Technical Specialist - Apple, Inc. (...
…customers purchase our products, you're the one who helps them get more out of their new Apple technology. Your day in the Apple Store is filled with a range of Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
Strategist, *Apple* Media Products, Content...
# Strategist, Apple Media Products, Content and Marketing Job Number: 113399632 Santa Clara Valley, California, United States Posted: 20-Feb-2018 Weekly Hours: 40.00 Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.