diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9dc68558..107722d1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -156,3 +156,85 @@ std::string SolveSpace::Dirname(std::string filename) { return ""; } ``` + +Debugging code +-------------- + +SolveSpace releases are throughly tested but sometimes they contain crash +bugs anyway. The reason for such crashes can be determined only if the executable +was built with debug information. + +### Debugging a released version + +The Linux distributions usually include separate debug information packages. +On a Debian derivative (e.g. Ubuntu), these can be installed with: + + apt-get install solvespace-dbg + +The macOS releases include the debug information, and no further action +is needed. + +The Windows releases include the debug information on the GitHub +[release downloads page](https://github.com/solvespace/solvespace/releases). + +### Debugging a custom build + +If you are building SolveSpace yourself on a Unix-like platform, +configure or re-configure SolveSpace to produce a debug build, and +then re-build it: + + cd build + cmake .. -DCMAKE_BUILD_TYPE=Debug [other cmake args...] + make + +If you are building SolveSpace yourself using the Visual Studio IDE, +select Debug from the Solution Configurations list box on the toolbar, +and build the solution. + +### Debugging with gdb + +gdb is a debugger that is mostly used on Linux. First, run SolveSpace +under debugging: + + gdb [path to solvespace executable] + (gdb) run + +Then, reproduce the crash. After the crash, attach the output in +the console, as well as output of the following gdb commands to +a bug report: + + (gdb) backtrace + (gdb) info locals + +If the crash is not easy to reproduce, please generate a core file, +which you can use to resume the debugging session later, and provide +any other information that is requested: + + (gdb) generate-core-file + +This will generate a large file called like `core.1234` in the current +directory; it can be later re-loaded using `gdb --core core.1234`. + +### Debugging with lldb + +lldb is a debugger that is mostly used on macOS. First, run SolveSpace +under debugging: + + lldb [path to solvespace executable] + (lldb) run + +Then, reproduce the crash. After the crash, attach the output in +the console, as well as output of the following gdb commands to +a bug report: + + (lldb) backtrace all + (lldb) frame variable + +If the crash is not easy to reproduce, please generate a core file, +which you can use to resume the debugging session later, and provide +any other information that is requested: + + (lldb) process save-core "core" + +This will generate a large file called `core` in the current +directory; it can be later re-loaded using `lldb -c core`. diff --git a/README.md b/README.md index e8c1f489..ee43aca4 100644 --- a/README.md +++ b/README.md @@ -153,87 +153,11 @@ in bash: [cmakewin]: http://www.cmake.org/download/#latest [mingw]: http://www.mingw.org/ -Debugging a crash ------------------ +Contributing +------------ -SolveSpace releases are throughly tested but sometimes they contain crash -bugs anyway. The reason for such crashes can be determined only if the executable -was built with debug information. - -### Debugging a released version - -The Linux distributions usually include separate debug information packages. -On a Debian derivative (e.g. Ubuntu), these can be installed with: - - apt-get install solvespace-dbg - -The macOS releases include the debug information, and no further action -is needed. - -The Windows releases include the debug information on the GitHub -[release downloads page](https://github.com/solvespace/solvespace/releases). - -### Debugging a custom build - -If you are building SolveSpace yourself on a Unix-like platform, -configure or re-configure SolveSpace to produce a debug build, and -then re-build it: - - cd build - cmake .. -DCMAKE_BUILD_TYPE=Debug [other cmake args...] - make - -If you are building SolveSpace yourself using the Visual Studio IDE, -select Debug from the Solution Configurations list box on the toolbar, -and build the solution. - -### Debugging with gdb - -gdb is a debugger that is mostly used on Linux. First, run SolveSpace -under debugging: - - gdb [path to solvespace executable] - (gdb) run - -Then, reproduce the crash. After the crash, attach the output in -the console, as well as output of the following gdb commands to -a bug report: - - (gdb) backtrace - (gdb) info locals - -If the crash is not easy to reproduce, please generate a core file, -which you can use to resume the debugging session later, and provide -any other information that is requested: - - (gdb) generate-core-file - -This will generate a large file called like `core.1234` in the current -directory; it can be later re-loaded using `gdb --core core.1234`. - -### Debugging with lldb - -lldb is a debugger that is mostly used on macOS. First, run SolveSpace -under debugging: - - lldb [path to solvespace executable] - (lldb) run - -Then, reproduce the crash. After the crash, attach the output in -the console, as well as output of the following gdb commands to -a bug report: - - (lldb) backtrace all - (lldb) frame variable - -If the crash is not easy to reproduce, please generate a core file, -which you can use to resume the debugging session later, and provide -any other information that is requested: - - (lldb) process save-core "core" - -This will generate a large file called `core` in the current -directory; it can be later re-loaded using `lldb -c core`. +See the [guide for contributors](CONTRIBUTING.md) for the best way to file issues, contribute code, +and debug SolveSpace. License -------