NOTE: This document is out of date and needs attention. The main issues are which versions to download. Also the keymap files do not work in NetBeans 8.1.
==NetBeans==
[[https://netbeans.apache.org/ | NetBeans]] is a cross platform IDE. If you prefer using another IDE, feel free, but you may need to configure project settings yourself.
We are currently using version 8.1 so that is the supported version for project configurations at this time.
==Setting Up==
===Prerequisites===
```
sudo apt-get install openjdk-7-jdk
```
===Installing===
Download NetBeans from the downloads page of their website: https://netbeans.apache.org/download/
The "All" version of the IDE is recommended if you are considering doing any wizard development or Java development (note: Android development with Echo does not require the Java components of NetBeans as Echo provides a C++ development environment). If you are only doing C++ development, select the smaller C++ only package.
===Faster builds===
If you have a multi core CPU you can enable parallel building with make using the `-j` flag followed by the number of parallel processes to use. To configure this:
1. Open NetBeans options. Tools -> Options
2. Select the C/C++ category
3. Select the Project Options tab
4. In the Make Options box enter `-j n` where n is the number of processes to use.
NOTE: Make sure you have enough resources for the number of processes you request. DO NOT specify more than the number of cores you have. I recommend keeping at least one core free. So on a 4 core system I would set this to 3. If you have a processor with pseudo cores such as the i7 you can use the extra cores too, so for example I'm currently running an i7 which reports 8 cores (4 cores with 2 threads each), so I have my command line option set to `-j 7`
===Fixes for Ubuntu based systems (possibly others)===
====Allow Debugging Attachment====
Fix for `ptrace: Operation not permitted.` error message when attempting to attach debugger:
```
sudo su -
echo 0 > /proc/sys/kernel/yama/ptrace_scope
```
And to make the change permanent, set `kernel.yama.ptrace_scope = 0` in `/etc/sysctl.d/10-ptrace.conf`
gksudo gedit /etc/sysctl.d/10-ptrace.conf
As seen [[http://blog.mellenthin.de/archives/2010/10/18/gdb-attach-fails-with-ptrace-operation-not-permitted/comment-page-1/#comment-141535 | here]]; thanks to @0xSeanTasker for finding it.
====Better view of standard library containers in debug====
GDB might not be able to read standard library containers (`std::map`, et cetera) and some tweaks will need to be done to read them...
Follow the instructions on the GDB wiki to install the python pretty-printers for viewing STL containers: http://sourceware.org/gdb/wiki/STLSupport
(Maybe also http://stackoverflow.com/a/13132091/423481 but this wasn't necessary for me)
This only works with g++ 4.7: [[tools/gpp|ensure you have at least version 4.7]].
==Customisation==
===Keyboard Shortcut Mapping===
As most of us have a [[http://en.wikipedia.org/wiki/Job#Day_job|day job]], we are also required to use other tools that aren't quite as affordable as others (Visual Studio is $10K+ per license, other great IDEs are "free"). Visual Studio is a great IDE and due to its market dominance it is likely that programmers are familiar with the keyboard shortcuts. To make the transition to NetBeans as painless as possible, @0xseantasker took the time to map keyboard shortcuts to make them as similar as possible. The keyboard shortcuts are mapped as though Visual Studio + Visual Asset were in use. The following configuration files are available.
{F4379}
To use this mapping, go to "Tools -> Options" and press the Import button to import the zip file. Then select the Visual Studio keymap.
==Troubleshooting==
[[http://wiki.netbeans.org/FaqSlowNetBeans|Poor performance?]]