Blue Static

Archive for the ‘MacGDBp’ category

Looking Towards the Future

Posted on October 28, 2019 at 15:30 UTC, filed under the category MacGDBp. Tags: software, MacGDBp,

First, welcome to the new Blue Static! The site has a fresh coat of paint, it has been made more mobile-friendly, and I have updated much of the content, pruning extremely old things while keeping still-old-but-maybe-interesting items around for posterity. For the first time in the history of the site, Blue Static is no longer powered by PHP: the entire site is now rendered as static files by Hugo.

It has been well over seven years since this site was last updated, and that is because I no longer have the substantial amounts of time I once had to dedicate to Blue Static software. Since I now spend all of my working hours writing and maintaining software, the allure of doing so as a hobby has unfortunately diminished.

Over the past few months, I’ve pondered how to move forward with the various Blue Static projects. I’ll outline some of those decisions now:

MacGDBp still has a large number of loyal users. I’m happy to report that in these intervening years, I’ve worked sporadically on the next major version. The first beta of MacGDBp 2.0 will be released before the end of the year! The entire core debugging engine has been rewritten and made more robust, which has fixed many bugs and added new features. The new version will also be code signed and notarized to be compliant with Apple’s increasingly locked-down macOS.

RGB Converter will remain available for download, but because Apple has removed Dashboard in macOS 10.15 Catalina, the widget will not be updated anymore.

Bugdar is the project that I’ve struggled to make a decision on. It is fairly safe to say that any 2.0 greenfield rewrite will not happen. However all of Blue Static’s bugs remain in the Bugdar instance that runs on this site, so it cannot go anywhere over night. I am not currently enamored with other options, such as Github’s issue tracker, so despite Bugdar’s visible age I will continue to run it for Blue Static’s purposes. There may be an infrequent maintenance update, but I do not expect to make major changes to the software at this time.

What drove these decisions is that I have largely stopped writing software in PHP. It is no longer my language of choice, and my interests have moved on to other programming languages and software domains. MacGDBp remains important to me beacuse others find it useful and the code is still fun to work on.

I’ll close with a teaser: there is at least one new project that I will be publishing in the future under Blue Static. It has to do with email and is geared towards power-users.

Look forward to MacGDBp 2.0 Beta 1 coming to a Sparkle update near you!

MacGDBp 1.5 Released

Posted on September 3, 2012 at 01:50 UTC, filed under the category MacGDBp. Tags: Cocoa, mac os x, MacGDBp,

MacGDBp 1.5 has been released. This update fixes a crash on 10.8 when adding a breakpoint. Credit for the fix goes to Paul Mitchell and Sam Fleming.

This release also includes a new feature that allows you to evaluate and see the result of an arbitrary PHP expression. For example, you can use print_r to get a different view of PHP objects:

Full details are in the changelog.

Tracking Info:
Current SHA1: 0508dff
Version: 1.5.0.104.0
Last Release Build: Sun Sep 2 21:13:38 EDT 2012

MacGDBp 1.4.1 Released

Posted on April 29, 2011 at 04:58 UTC, filed under the category MacGDBp. Tags: Cocoa, mac os x, MacGDBp,

MacGDBp 1.4.1 has been released; this is a maintenance update that fixes a few bugs. I meant to get this release out a few weeks ago, but I’ve been travelling recently and didn’t have the time.

You can download MacGDBp 1.4.1 from this page. Please file any new issues in the bug tracker.

Tracking Info:
Current SHA1: 7fde123
Version: 1.4.1.91.97
Last Release Build: 2011-04-29 00:33:16

MacGDBp 1.4 Released [u]

Posted on February 26, 2011 at 18:08 UTC, filed under the category MacGDBp. Tags: mac os x, MacGDBp,

After a slight delay trying to track down some bugs, I’ve decided to push MacGDBp 1.4 to stable distribution. While this release is not quite perfect and there are a few known issues (listed on the project page), I was tired of blocking the release on relatively minor bugs. This release has been a year in the making, and it makes significant improvements over the 1.3 branch. To find out more about what went into making this new version, check out some of the older posts on the blog.

You can download MacGDBp 1.4 from this page. Please file any new issues in the bug tracker.

Update: A minor bug had to be fixed with the released package. I’ve pushed a new binary and the few people who have downloaded the update will be prompted to update again.

Tracking Info:
Current SHA1: 4ce0d31 d746f73e
Version: 1.4.0.85 .83
Last Release Build: 2011-02-26 14:21:17 2011-02-26 12:29:16

MacGDBp 1.4 Beta 2

Posted on January 15, 2011 at 05:26 UTC, filed under the category MacGDBp. Tags: Cocoa, mac os x, MacGDBp,

I’m happy to announce MacGDBp 1.4 Beta 2. It’s been nearly a month since the first beta was released and more than 200 people have tested Beta 1. I haven’t received any critical bug reports, which means that the internals are stable enough to ship. Beta 2 is the Release Candidate; barring any significant issues, this will be promoted to Stable in a month or less.

This release has a couple of bug fixes and adds two small enhancements:

You can download MacGDBp 1.4 Beta 2 from this page. Please file any new issues in the bug tracker.

Tracking Info:
Current SHA1: 5cfd0db
Version: 1.4.0.74 β2
Last Release Build: 2011-01-14 23:48:03

MacGDBp 1.4 Beta 1

Posted on December 18, 2010 at 22:17 UTC, filed under the category MacGDBp. Tags: mac os x, MacGDBp,

I’m happy to announce the first beta of MacGDBp 1.4. This release represents nearly a year’s worth of work rewriting the entire internal structure of the application. As mentioned previously, MacGDBp 1.4 now communicates to the backend in an asynchronous manner. Not only does this change increase the robustness of the program, it should no longer beachball while waiting for responses from Xdebug. Because it took such a long time to stabilize this branch, there is very little in the way of new features for this release: almost all the work for this release was done for making the network changes and increasing stability.

One new point to be aware of is that the concept of “reconnect” is gone in this version. Instead, the debugger is now either attached to the backend or is detached. When attached, MacGDBp will start debugging any connections from Xdebug. When detached, MacGDBp will send the “detach” command immediately after receiving any new connections, aborting the debug.

There is one known issue:

You can download MacGDBp 1.4 Beta 1 from this page. Please try out this new version and file any new issues in the bug tracker.

Tracking Info:
Current SHA1: 1ffc93e
Version: 1.4.0.61 β1
Last Release Build: 2010-12-18 14:18:34

MacGDBp 1.4: Becoming Asynchronous

Posted on March 30, 2010 at 04:59 UTC, filed under the category MacGDBp. Tags: MacGDBp,

In between working on Bugdar 2, Phalanx, and Chromium, I’ve also been working on MacGDBp 1.4.

With the 1.3.0 release, I tried to address a couple of issues with the underlying network communication layer (called SocketWrapper, which was an Obj-C bridge to a BSD socket). The primary issue I tried to address was with Unicode characters; MacGDBp really only knows how to deal with ASCII text, which has proven problematic for international users. I tried to address this with the 1.3 branch by switching how data was stored and processed. But the 1.3.0 release was an utter failure from this perspective. It crashed extremely often, which lead to the 1.3.1 release that reverted the new network-layer changes. (That said, the new features introduced by 1.3 have been well-received.)

But the issues with the network layer ran far deeper than just dealing with Unicode text. MacGDBp uses synchronous communication with the debugger engine. When you issue a command (step in/out/over, get source, get properties, etc.), the command would be sent and then the thread would block until it received a response. This is bad, especially because MacGDBp does not use background threads; all the communication happens on the main UI thread. This can lead to beach balling and a bad user experience. So, why did I do this? Because synchronous communication makes for a dead-simple API. Asynchronous communication requires a lot more bookkeeping and works through callbacks.

So, for 1.4.0, I decided it was time to revisit the debugger backend. Rather than just trying to adjust how data is transmitted (ASCII vs. Unicode), I decided to rewrite from scratch the entire Xdebug communication layer. Rather than using raw BSD sockets, the 1.4 branch uses the CFNetwork API. This yields two huge benefits. The first is that all network activity is asynchronous because socket stream events are scheduled on the run loop. When data is available, a callback is executed and the UI is updated (as opposed to blocking the thread while waiting for a response). This also makes the application more robust, because if the response never comes, it will not lock up the entire UI. Secondly, by using a Foundation-level framework, UTF8 support comes pre-baked via the toll-free bridge to NSString.

I’ve been rewriting the back end in my spare time and it’s finally starting to stabilize. This release is still fairly far out, though. This core network change is also leading to a large refactoring of the entire application to make it more easily unit testable in the future. One of the results of this is creating a new LoggingController to record all network activity. The goal with this “hidden feature” is to make it easier to track down causes of bug reports. The log looks like this; it’s not pretty, but it should get the job done:

I haven’t yet selected the set of feature enhancements that are scheduled for this milestone. Before any new feature work can be started, the 1.4 trunk needs to become as stable as the 1.3 branch. If you have any feature requests, please search for or file new issues and vote them up in the bug tracker.

Tracking Info:
Current SHA1: a7725f8
Version: 1.4.0.40 β
Last Release Build: 2010-03-29 17:51:39

MacGDBp 1.3

Posted on May 19, 2009 at 03:51 UTC, filed under the category MacGDBp. Tags: mac os x, MacGDBp, software,

I’m pleased to announce MacGDBp 1.3. This release features a new tool that allows you inspect values in the variables list via a HUD (screenshot below). This inspector will allow you to see long strings and to select/copy text values. To access this feature, go to Window → Inspector (Shift+Cmd+I). The currently-selected variable (which now, in 1.3, remembers itself across debugger stepping) will have its full value displayed in the HUD window.

MacGDBp 1.3 Variable Inspector

Under the hood, there are two significant changes. The first is a rewrite of the receiving side of the socket layer (it now precisely uses the message length when buffering memory), which should eliminate the “buffer is incomplete” errors that occasionally popped up. The second is that the PHP stack will no longer be managed internally. After every debugger step, the entire stack will be now re-created because Xdebug proved to be unpredictable for keeping in sync with an internal state. Debugger actions may now seem a little less snappy, but I think accuracy is more important than speed here. In 1.4 I’m going to use a caching mechanism that will speed up performance by reducing network access.

This release also features a bunch of bug fixes, a couple of which would cause the debugger display to not work under certain circumstances. As always, the change log and commit log have all the details on the release.

MacGDBp 1.1 Released

Posted on August 4, 2008 at 17:30 UTC, filed under the category MacGDBp. Tags: MacGDBp,

I just released version 1.1 of MacGDBp. This release is a minor feature update, as well as a bug fix release.

A few important features that made it into this release are settings to change the Xdebug port to use, keyboard shortcuts and menu items for debugging commands, and breakpoints are now saved on quit so that when you re-open MacGDBp all your old breakpoints are there.

Furthermore, the MacGDBp is now updated via Sparkle rather than the custom software mechanism I wrote for version 1.0 and 1.0.1.

Finally, I’d like to thank Ciarán Walsh for providing some key patches for stability and memory leaks.

The Road to MacGDBp, Part II

Posted on June 5, 2008 at 15:48 UTC, filed under the category MacGDBp. Tags: debugging, MacGDBp, PHP,

The bug with XML parsing I mentioned in the last post caused me days of grief. I’ve been trying to find the cause of that bug (off and on, albeit) for months. It turns out the fix was very simple. All that’s left is creating the breakpoint manager and then MacGDBp will be released. Hopefully by the end of next week v1.0 will be in your hands!

In this post, I’m going to talk about icon design. One of the ideas I had for this was to use the PHP logo in some way — but using logos in an icon is tacky. Instead, I decided to keep the purple of the PHP logo. Since PHP is internet-based, I decided to take inspiration from the words “World Wide Web” and I drew out a globe. So at this point, I had a purple globe. Now I had to decide what to design on top of the globe (because a purple globe only conveys internet connectivity). For this I really saw two options: a screwdriver and wrench or a toolbox. On Mac OS X, the screwdriver-wrench combination usually implies configuration (c.f. Color Sync Utility, Raid Utility, configure toolbar item, etc.). Debugging is not in the same vein as configuring, so I ruled that one out. The toolbox, while unused on Mac OS X (except for the Adobe ExtendScript Toolkit), seemed like a good fit. I should also note that I thought about drawing a yellow spray can — akin to the debug icon in Xcode — but quickly dismissed it for being too similar to Xcode.

This is the paper sketch I first did of the icon:

Then I recreated the sketches digitally. You can see how the design evolved here.

The final step (not outlined above) was adding drop shadow to the entire icon. This is the final design:

Hopefully the next post about MacGDBp will be the release announcement!