Jump to content

How do I generate debugging files?


Recommended Posts

Last update: 16 July 2018
Current Ver: 4.2.7

Suggestions/Discussions: HERE

Hello guys,
I have seen many instances where people start a thread with the problem they are facing on their hack.

They try to describe the issue in their own way that most of the times, is not able to properly describe what's going wrong with their system.

The developers and other advanced members on OSXL can point out the problem exactly when they have a set of files, called problem reporting files.

These are basically a set of files that contain various logs and some other components.

Many a times a normal user can not generate those files properly and it leads to a lot of wastage of good time, frustrated by this, I wrote a script to generate proper problem reporting files. You can have a look at the source code here

The purpose of this guide is to tell the normal user on how to generate those files properly for debugging.

I wrote a script that automatically installs that debug report generator script and then gives you a .zip output.

If you are seeking help about a problem and you must attach problem reporting files as it saves a lot of time.

How to generate debug report:-

It is very simple, you just have to download the attached script and run it. The script in attachment will install the tool for you and will then prompt if you want to generate the files.

If you want to generate files next time, you just have to invoke: "gen_debug" from terminal (without quotes)

How to download and run attached script :-

  • Unzip the downloaded zip file
  • Open terminal
  • Assuming your script is in Downloads folder, type the following code :-
chmod a+x ~/Downloads/install_tools.sh

Args for gen_debug:

You can use custom set of args for controlling gen_debug output, this list will be updated as new features become available

  • gen_debug -u || To update your copy (available from ver2.1+)
  • gen_debug -sysprofile || To include your system profile in the dump (available from ver2.2+)
  • gen_debug -sysprofile txt || To include system profile in the dump but in TXT format

Note: Whenever you change anything, you should attach new output of gen_debug.

Note 2: It is recommended to update your copy of gen_debug every alternate month (for fixes and new features). To do so, If you are running version 2.1 or above, you can simply type "gen_debug -u" (without quotes) in terminal. If you are running version 2.0 or less, you can use the attached installer script to update your copy.


Note 3: To all the users that are facing IOREG dump failures:
You need to enable the accessibility permissions for the “Terminal”. 
This privacy feature was introduced in macOS Mojave.
Open Sys Prefs > Security & Privacy > Accessibility. Look for “Terminal” and allow access. 



Update 4.2.7 - 14 Jul 2018

  • Fix a rare issue where script went crazy when user had a space in his/her home folder name.

Update 4.2.6

  • Improvements to ACPI file verification and colored STDERR.

Updates 4.2 to 4.2.5

  • Check for ACPI origin files existence and age 
  • Added a hacky method for IORegistryExplorer verification (will download regexplorer for once)
  • Listen for CTRL+C interrupts
  • Hardcode the launch-path for IORegExplorer (prevents launch of other version than the one intended.)
  • Include PwrMgmtSet(PMSET) in dump
  • Handle scenarios where ACPI files age is in some h/m/s
  • Check for preboot log & many other enhancements.

Updates 4.0 to 4.2:

  • Experimental support for Chameleon (and similar) boot-loaders.
  • Check for ACPI origin files age. Should not be older than 1 day.

Updates 3.2 to 4.0:

  • Fix potential user's file deletion loophole
  • Make IOREG dump dynamic (time values are adjusted automatically for slower machines)
  • Include generic IOREG dump if normal IOREG dump fails more than 3 times.
  • Handle scenarios where CLOVER might not be installed.
  • Include kernel panic logs if exits.
  • Fixed issues with whitespaces in EFI pathname.
  • If root elevations fails, exit.
  • Include list of all loaded kexts in dump.

Update 3.1 - 1 Jan 2018:

  • Mask MLB in RtVariables section of config.plist
  • Fixed STDERR for pledit

Update 3.0 - 29 Dec 2017:

  • Fix conflicts with GNU date on some developer environments (Fix kernel log generation)

Update 2.9 - 21 Dec 2017:

  • Fix kextcache output redunancy on 10.13.1+

Update 2.8 - 13 Dec 2017:

  • Add NVRAM dump functionality.
  • Fix broken update functionality when using "-u" arg.

Update 2.7 - 12 Dec 2017:

  • If a new update for the script it available, it will update automatically. (Helps to stay you up-to-date)
  • New IOReg dump mechanism for slow machines.
  • Include script version in the dump report.

Update 2.6 - 11 Dec 2017:

  • IOREG dump will never ever fail again.

Update 2.5 - 3 Dec 2017:

  • Check for IORegistryExplorer version 2.1

Update 2.4 - 2 Dec 2017:

  • Script now also dumps your boot log

Update 2.3 - 2 Dec 2017:

  • Fixed an issue where the time stamp of files was overwritten to current system time, reported by RehabMan.

Update 2.2 - 27Nov 2017:

  • Added option to generate system information dump using -sysprofile arg

Update 2.1 - 27Nov 2017:

  • Fixed an issue where IOREG was not saved on some machines
  • You can now update your copy of OSX-Debug by using "-u" arg, like gen_debug -u





  • Like 6
Link to comment
Share on other sites

  • Moderators

Hi @black.dragon74

Hope you don't mine, I added a third Note3 in your 1st post suggesting to allow terminal access in Sys Prefs > Security & Privacy > Accessibility

I've also noticed that in latest MacOS, IOReg file don't have permission to write to the random generated folder, therefore failed. You have to manually save it to another directory and then add it to the debug file and recompress them together.

I made a change to the write permission when generating the folder and that seems to work. Here's my change in gen_debug



# Start dumping the data, start by creating dirs
if [[ -e "$outDir" ]];
    rm -rf "$outDir"
    mkdir -p "$outDir"




# Start dumping the data, start by creating dirs
if [[ -e "$outDir" ]];
    rm -rf "$outDir"
    mkdir -p -m 777 "$outDir"


Link to comment
Share on other sites

This topic is now closed to further replies.
  • Create New...