mirror of
https://github.com/86Box/86box.github.io.git
synced 2026-02-22 09:35:35 -07:00
4.2 KiB
4.2 KiB
layout, title
| layout | title |
|---|---|
| page | Debug binaries |
Debug binaries
86Box provides binaries with debugging information to help in diagnosing crashes or other incorrect behavior. These binaries are compiled with the --preset=debug CMake flag, perform worse than regular binaries due to reduced optimizations, may require a development environment to run properly, and are not recommended for non-debugging use.
The debuggers we use and recommend are:
- MSYS2 GDB on Windows - build dependencies plus
$MINGW_PACKAGE_PREFIX-qt5are required since Windows debug binaries are dynamically linked; - GDB on Linux;
- LLDB on macOS.
IMPORTANT: Debug binaries should only be used if you know what you're doing. If you don't know what any of this means, go to Jenkins and download regular binaries.
<script> window.onload = function() { /* Show button. */ document.getElementById('debugagree').style.display = 'block'; /* Load job information from Jenkins. */ var script = document.createElement('script'); script.setAttribute('src', '//ci.86box.net/job/86Box/api/json?jsonp=populateLatestBuild&forceDebug=' + new Date().getTime()); document.head.appendChild(script); }; function populateLatestBuild(data) { /* Automatically load debug binaries for the latest build. */ var buildnumber = document.getElementById('buildnumber'); if (!buildnumber.value) { /* don't do anything if the user was faster than us */ buildnumber.value = data['lastSuccessfulBuild']['number'].toString(); submitDebug(); } } function showDebug() { /* Hide button and show form. */ document.getElementById('debugagree').style.display = 'none'; document.getElementById('debugform').style.display = 'block'; } function submitDebug() { /* Show loading message. */ var debugbins = document.getElementById('debugbins'); debugbins.innerHTML = 'Loading build information...'; /* Load build information from Jenkins. */ var script = document.createElement('script'); script.setAttribute('src', '//ci.86box.net/job/86Box/' + document.getElementById('buildnumber').value.replace('#', '') + '/api/json?jsonp=listDebug&forceDebug=' + new Date().getTime()); script.onerror = function() { /* Show error message. */ debugbins.innerHTML = '
Could not load build information.'; }; document.head.appendChild(script); } function listDebug(data) { /* Clear loading message. */ var debugbins = document.getElementById('debugbins'); debugbins.innerHTML = ''; /* Start directory structure. */ var ul = document.createElement('ul'); debugbins.appendChild(ul); /* Parse directory structure. */ var pathElements = {'': ul}; for (var artifactId in data['artifacts']) { var artifact = data['artifacts'][artifactId]; if (artifact['fileName'].match(/-(Debug|Dev(ODR)?|Optimized)-/)) { var split = artifact['relativePath'].split('/'); for (var i = 0; i < split.length; i++) { /* Skip paths that were already processed. */ var path = split.slice(0, i + 1).join('/'); if (pathElements[path]) continue; /* Create list entry. */ var listEntry = document.createElement('li'); var parentElement = pathElements[split.slice(0, i).join('/')]; if (i == (split.length - 1)) { /* Add file link. */ listEntry.innerHTML = '' + artifact['fileName'] + ''; } else { /* Add subdirectory name and listing. */ listEntry.innerHTML = split[i]; pathElements[path] = document.createElement('ul'); listEntry.appendChild(pathElements[path]); } /* Add new list entry to parent. */ parentElement.appendChild(listEntry); } } } } </script>
I agree, show me the debug binaries
Build number: