Gdb For Mac

This document explains how to debug Mozilla-derived applications such as Firefox, Thunderbird, and SeaMonkey on macOS using Xcode. If you want to debug from the terminal see Debugging Mozilla with lldb. For specific information on a way to debug hangs, see Debugging a hang on OS X.

Adaware, the security and privacy leader for PC and the Web, offers simple, seamless solutions that enhance your online experience, and keep you connected. Scans Mac-fast. Scans the average Mac in under 30 seconds. Run the malware scanner in the background while you boot up your favorite game and it's done by the time you're ready to play. You can even customize your scans to run when you're not using your Mac at all—at any day, at any time. Nov 14, 2017  How to Remove Malware and Adware From Your Mac. Chris Hoffman @chrisbhoffman November 14, 2017, 11:23am EDT. Yes, Macs can get malware. Beyond traditional viruses, worms, and Trojans, there’s now a thriving ecosystem of adware and spyware programs that bombard you with ads and spy on your web browsing, just like on Windows. Ad-Aware is a product line created by Lavasoft, aiming to detect and remove spyware, viruses, adware and malware. It's one of the best protection software for your computer. However, Lavasoft Ad-Aware only works on Windows platform. Therefore, if you're now using a Mac computer, you have to an Ad-Aware for Mac alternative. Here MacBooster is highly. Adaware for mac.

The officially supported debugging package for Mac OS X is lldb, which is a fine debugger. However, many people including me still prefer to use gdb, the GNU debugger. In fact, I use cgdb, which provides nice color interface to gdb, and that is why I must install gdb on my Mac. GDB 8.1 is broken on macOS 10.13. Bug 1, Bug 2. You need to downgrade to 8.0 for the time being, see this answer on how to do that. I had to run 10. Above with sudo.

Creating a debuggable build

First, you need to build the application you're going to debug using --disable-optimize--enable-debug-symbols in your .mozconfig (also add --enable-debug if you want assertions etc. compiled in). See Building Firefox for macOS if you need help creating your own build.

Debugging Firefox on macOS 10.14+

macOS 10.14 introduced Notarization and Hardened Runtime features for improved application security. macOS 10.15 went further, requiring applications to be Notarized with Hardened Runtime enabled in order to launch (ignoring workarounds.) When run on earlier macOS versions, Notarization and Hardened Runtime settings have no effect.

Official Builds

At this time, official builds of Firefox 69 and later are Notarized. Uplifts to Firefox 68 and ESR 68 to enable Notarization are planned. As a result, it is not possible to attach a debugger to these official Firefox releases on macOS 10.14+ without disabling System Integrity Protection (SIP). This is due to Notarization requiring Hardened Runtime to be enabled with the com.apple.security.get-task-allow entitlement disallowed. Rather than disabling SIP (which has security implications), it is recommended to debug with try builds or local builds. The differences are explained below.

try Server Builds

In most cases, developers needing to debug a build as close as possible to the production environment should use a try build. These builds enable Hardened Runtime and only differ from production builds in that they are not Notarized which should not otherwise affect functionality, (other than the ability to easily launch the browser on macOS 10.15+ -- see quarantine note below). At this time, developers can obtain a Hardened Runtime build with the com.apple.security.get-task-allow entitlement allowed by submitting a try build and downloading the dmg generated by the 'Rpk' shippable build job. A debugger can be attached to Firefox processes of these builds. try builds use the developer.entitlements.xml file from the source tree while production builds use production.entitlements.xml. On macOS 10.15+, downloaded try builds will not launch by default because Notarization is required. To workaround this problem, remove the quarantine extended attribute from the downloaded Nightly:

 $ xattr -r -d com.apple.quarantine /Path/to/Nightly.app

A hard drive can be used on any type of computer - PC or Mac. But in order for the computer and drive to talk to one another, the drive has to be formatted. This article explains. Seagate branded external drives come preformatted, some for PCs, some for Macs, and some of them have special utilities allowing them to work between both without formatting. Oct 18, 2019  Step 1, Plug your hard drive into your computer. Insert the drive's USB cable into one of the thin, rectangular slots in your computer's casing. If you're using a desktop computer, USB ports are typically in either the front or the back of the computer's CPU box.Step 2, Open Start. Click the Windows logo in the bottom-left corner of the screen, or press ⊞ Win on your keyboard.Step 3, Open File. Before going through the format process, you have to meet the following conditions in order for your external hard drive to become an extended storage: Only USB 3.x connectivity is accepted. The external hard drive capacity should be between 250gb minimum to 8tb maximum. The external hard drive must connect directly to the USB port of PS4. Oct 27, 2017  Open the Disk Utility app and highlight your external hard drive. Make sure you select the disk icon right under “External”. If you select the one below it, the Partition option will be greyed out and become unclickable. Keep in mind that a MAC can generally read other file formats, but for the best performance and to create a bootable disk, formatting exclusively for MAC is required. Reformatting an External Hard Drive for MAC. Follow these steps to ensure you have a proper space to enjoy your files for a long time to come. Connect the external drive or the USB drive to the MAC. Start the Disk Utility, located under. How to format external hard drive for ps4 on mac torrent

Local Builds

Local builds of mozilla-central do not enable Hardened Runtime and hence do not have debugging restrictions. As a result, some functionality will be permitted on local builds, but blocked on production builds which have Hardened Runtime enabled. Bug 1522409 was filed to automate codesigning local builds to enable Hardened Runtime by default and eliminate this discrepancy.

To obtain a Hardened Runtime build without using try infrastructure, a developer can manually codesign builds using the macOS codesign(1) command with the developer.entitlements.xml file from the tree. This requires creating a codesigning identity.

Disabling System Integrity Protection (SIP)

If debugging a production build is required, follow Apple's documented steps for disabling System Integrity Protection (SIP). Note that disabling SIP bypasses Hardened Runtime restrictions which can mask some bugs that only occur with Hardened Runtime so it is recommended to test fixes with SIP enabled. Disabling SIP has system security implications that should be understood before taking this step.

Gdb For Mac

Creating an Xcode project

If you try to create a new Xcode project in an existing directory then Xcode will delete its existing contents (Xcode will warn you beforehand). To work around that the steps below will have you initialize the project outside the Mozilla source tree, close the project, copy the .xcodeproj project 'file' into the source tree, and only then will you reopen the project to finish setting it up.

Note also that since Xcode 7.3.1 it doesn't seem to be possible to have the Xcode project live outside the source tree. If you try to do that then Xcode will simply copy the source files under the project directory rather than link to them (still the case in Xcode 10?) which breaks debugging and the possibility to modify-rebuild-relaunch from inside Xcode.

These steps were last updated for Xcode 10:

  1. Open Xcode, and create a new Project with File > New Project. Select the 'Cross-platform' tab then under the 'Other' template group select the 'Empty' project type. the click Next. Name the project and click Next. Select a temporary directory to create the project files in and then click Create.
  2. Before going any further, close the project (File > Close Project) and open Finder. Find the *.xcodejproj directory in the temporary directory, move it into your Mozilla source tree, and then double-click on it to open it.
  3. In the left-hand pane in Xcode you should see a tree where the root item has the project name, and under it is the temporary directory that you originally created the Xcode project in under. Right click on the temporary directory and delete it, then right click on the root item, select 'Add files to '<project-name>', select all the files and directories in your source directory, then click Add. (These will then be progressively added under the root item <project-name> in the left-hand pane. Note that subdirectories may initially appear to be empty, but they too will progressively be populated as Xcode processes the sourse files. Once done, you should be able to open any file quickly by hitting Cmd-Shift-O and typing in the name of a file.)
  4. In the Product menu, select Scheme > New Scheme and name your scheme (for example, 'Debug'). After you click OK, Xcode should open the settings window for the new scheme. (If not, then open its settings from the Product > Edit Scheme menu.)
  5. Select 'Run' on the left-hand side of the settings window, then select the 'Info' tab. Set the Executable by clicking on 'None' and selecting 'Other..'. A new dialog titled 'Choose an executable to launch' will pop up. Browse to the .app file that you want to debug (Firefox.app, NightlyDebug.app etc). The .app file is typically found inside the dist folder in your build directory.
  6. If you are debugging Firefox, Thunderbird, or some other application that supports multiple profiles, using a separate profile for debugging purposes is recommended. See 'Having a profile for debugging purposes' below. Select the 'Arguments' tab in the scheme editor, and click the '+' below the 'Arguments passed on launch' field. Add '-P profilename', where profilename is the name of a profile you created previously. Repeat that to also add the argument '-no-remote'.
  7. Also in the 'Arguments' panel, you may want to add an environment variable MOZ_DEBUG_CHILD_PROCESS set to the value 1 to help with debugging e10s.
  8. Select 'Build' from the left of the scheme editor window, and check that there is nothing listed under Targets (otherwise it may cause problems when you try to run the executable for debugging since you will get build errors).
  9. Click 'Close' to close the scheme editor.

At this point you can run the application from Xcode, and when you pause or hit breakpoints it should show open the correct source file at the correct line.

Gdb Mac Os High Sierra

Setting up lldb

lldb is the debugger XCode version 5 and above uses under the hood (previous versions used gdb).

The .lldbinit file in the source tree imports many useful Mozilla specific lldb settings and commands but when debugging in XCode this file is not loaded by default since Xcode does not run using $topsrcdir as its current working directory (see bug 942133). To work around this add the following to $HOME/.lldbinit and set fallbacktopsrcdir to a Mozilla source directory that you regularly update:

see Debugging Mozilla with lldb for more information.

Note that one important issue that the Mozilla .lldbinit file fixes is that by default some breakpoints will be listed as 'pending', and XCode will not stop at them. If you don't include the Mozilla's .lldbinit, you must at least put settings set target.inline-breakpoint-strategy always in your $HOME/.lldbinit as recommended on Debugging Mozilla with lldb.

You will need to use Python v2.x supplied by macOS, otherwise, you will encounter this error: ImportError: cannot import name _remove_dead_weakref. Run the following to correct this: brew unlink python@2.

Having a profile for debugging purposes

It is recommended to create a separate profile to debug with, whatever your task, so that you don't lose precious data like Bookmarks, saved passwords, etc. So that you're not bothered with the profile manager every time you start to debug, expand the 'Executables' branch of the 'Groups & Files' list and double click on the Executable you added for Mozilla. Click the plus icon under the 'Arguments' list and type '-P <profile name>' (e.g. '-P MozillaDebug'). Close the window when you're done.

Running a debug session

Make sure breakpoints are active (which implies running under the debugger) by opening the Product menu and selecting 'Debug / Activate Breakpoints' (also shown by the 'Breakpoints' button in the top right section of the main window). Then click the 'Run' button or select 'Run' from the Product menu.

Setting breakpoints

Setting a breakpoint is easy. Just open the source file you want to debug in Xcode, and click in the margin to the left of the line of code where you want to break.

During the debugging session, each time that line is executed, the debugger will break there, and you will be able to debug it.

Note that with the default configuration, some breakpoints will be listed as 'pending', and XCode will not stop at them. If you don't include the Mozilla's .lldbinit, you must at least put settings set target.inline-breakpoint-strategy always in your $HOME/.lldbinit as recommended on Debugging Mozilla with lldb.

Using Mozilla-specific lldb commands

If you included the .lldbinit when Setting up lldb, you can use Mozilla-specific lldb commands in the console, located in the Debug area of XCode. For example, type js to see the JavaScript stack. For more information, see Debugging Mozilla with lldb.

Debugging e10s child processes

Using XCode to debug child processes created by an e10s-enabled browser is a little trickier than debugging a single-process browser, but it can be done. These directions were written using XCode 6.3.1

Gdb Macros Tutorial

  1. Complete all the steps above under 'Creating the Project'
  2. From the 'Product' menu, ensure the scheme you created is selected under 'Scheme', then choose 'Scheme > Edit Scheme'
  3. In the resulting popup, click 'Duplicate Scheme'
  4. Give the resulting scheme a more descriptive name than 'Copy of Scheme'
  5. Select 'Run' on the left-hand side of the settings window, then select the 'Info' tab. Set the Executable by clicking on the 'Executable' drop-down, and selecting the plugin-container.app that is inside the app bundle of the copy of Firefox you want to debug.
  6. On the same tab, under 'Launch' select 'Wait for executable to be launched'
  7. On the 'Arguments' tab, remove all arguments passed on launch.

Now you're ready to start debugging:

  1. From the 'Product' menu, ensure the scheme you created above is selected under 'Scheme'
  2. Click the 'Run' button. The information area at the top of the window will show 'Waiting for plugin-container to launch'
  3. From a command line, run your build of Firefox. When that launches a child process (for example, when you start to load a webpage), XCode will notice and attach to that child process. You can then debug the child process like you would any other process.
  4. When you are done debugging, click the 'Stop' button and quit the instance of Firefox that you were debugging in the normal way.

For some help on using lldb see Debugging Mozilla with lldb.

Other resources

Apple has an extensive list of debugging tips and techniques.

Questions? Problems?

Gdb For Mac Os

Try asking in our IRC channels #developers or #macdev.