"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
-<link rel="icon" type="image/png" href="/favicon.png">\r
+<link rel="icon" type="image/x-icon" href="/favicon.ico">\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.7" />\r
+<meta name="generator" content="AsciiDoc 8.6.9" />\r
<title>i3: Debugging i3: How To</title>\r
<link rel="stylesheet" href="/css/style.css" type="text/css" />\r
<link rel="stylesheet" href="/css/xhtml11.css" type="text/css" />\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes();}\r
+document.addEventListener("DOMContentLoaded", function(){asciidoc.footnotes();}, false);\r
/*]]>*/\r
</script>\r
<script type="text/javascript" src="/js/asciidoc-xhtml11.js"></script>\r
<ul id="nav">\r
<li><a style="border-bottom: 2px solid #fff" href="/docs">Docs</a></li>\r
<li><a href="/screenshots">Screens</a></li>\r
+ <li><a href="https://www.reddit.com/r/i3wm/">FAQ</a></li>\r
<li><a href="/contact">Contact</a></li>\r
- <li><a href="http://bugs.i3wm.org/">Bugs</a></li>\r
+ <li><a href="https://github.com/i3/i3/issues">Bugs</a></li>\r
</ul>\r
<br style="clear: both">\r
<div id="content">\r
<h1>Debugging i3: How To</h1>\r
<span id="author">Michael Stapelberg</span><br />\r
<span id="email"><tt><<a href="mailto:michael@i3wm.org">michael@i3wm.org</a>></tt></span><br />\r
-<span id="revdate">December 2012</span>\r
+<span id="revdate">January 2014</span>\r
</div>\r
<div id="preamble">\r
<div class="sectionbody">\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_verify_you_are_using_the_latest_development_version">1. Verify you are using the latest (development) version</h2>\r
+<h2 id="_verify_you_are_using_i3_4_13">1. Verify you are using i3 ≥ 4.13</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>Please verify that you are using the latest version of i3:</p></div>\r
+<div class="paragraph"><p>Only the latest major version of i3 is supported. To verify which version\r
+you are running, use:</p></div>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>$ i3 --version\r
-i3 version 4.1.2-248-g51728ba (2012-02-12, branch "next")</tt></pre>\r
+<pre><tt>$ i3 --moreversion 2>&- || i3 --version\r
+Binary i3 version: 4.7 (2013-12-22, branch "tags/4.7")\r
+Running i3 version: 4.7-84-gac74a63 (2014-01-01, branch "next") (pid 1995)</tt></pre>\r
</div></div>\r
<div class="paragraph"><p>Your version can look like this:</p></div>\r
<div class="dlist"><dl>\r
<dt class="hdlist1">\r
-4.1.2 (release version)\r
+4.7 (release version)\r
</dt>\r
<dd>\r
<p>\r
You are using a release version. In many cases, bugs are already\r
-fixed in the development version of i3. If they aren’t, we will still ask you\r
-to reproduce your error with the most recent development version of i3.\r
-Therefore, please upgrade to a development version if you can.\r
+fixed in the development version of i3. Even if the bug is not a known fixed\r
+one, we will still ask you to reproduce your error with the most recent\r
+development version of i3. Therefore, please upgrade to a development version\r
+if you can.\r
</p>\r
</dd>\r
<dt class="hdlist1">\r
-4.1.2-248-g51728ba (development version)\r
+4.7-85-g9c15b95 (development version)\r
</dt>\r
<dd>\r
<p>\r
-Your version is 248 commits newer than 4.1.2, and the git revision of your\r
-version is <tt>51728ba</tt>. Go to <a href="http://code.i3wm.org/i3/commit/?h=next">http://code.i3wm.org/i3/commit/?h=next</a> and see if\r
+Your version is 85 commits newer than 4.7, and the git revision of your\r
+version is <tt>9c15b95</tt>. Go to <a href="http://code.i3wm.org/i3/commit/?h=next">http://code.i3wm.org/i3/commit/?h=next</a> and see if\r
the line "commit" starts with the same revision. If so, you are using the\r
latest version.\r
</p>\r
<div class="content">\r
<pre><tt>Exec=i3 --shmlog-size=26214400</tt></pre>\r
</div></div>\r
+<div class="paragraph"><p>If you cannot restart i3 for some reason, you can enable debug logging on the\r
+fly:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>i3-msg 'debuglog on; shmlog on; reload'</tt></pre>\r
+</div></div>\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_obtaining_the_debug_logfile">3. Obtaining the debug logfile</h2>\r
+<h2 id="_reproducing_the_problem">3. Reproducing the problem</h2>\r
<div class="sectionbody">\r
+<div class="paragraph"><p>Before submitting an issue, please make sure to close down on the problem as\r
+much as you can yourself. Here are some steps you should consider:</p></div>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Find a deterministic, reliable way to reproduce the problem and provide it\r
+ with your bug report.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Try using the default i3 config to reproduce the problem. If the issue does\r
+ not appear with the default config, gradually adapt it to track down what\r
+ change(s) to the config introduce the problem.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Reproduce the problem with a minimal setup, i.e., only use as few applications,\r
+ windows and steps as necessary.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+In addition, try to stick to applications that are common and, even more\r
+ importantly, free / open source.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Before obtaining the log file, restart i3 in-place, execute the steps to\r
+ reproduce the problem and then save the logs. This keeps the log file as\r
+ small as possible and necessary.\r
+</p>\r
+</li>\r
+</ul></div>\r
+<div class="paragraph"><p>Please be aware that we cannot support compatibility issues with closed-source\r
+software, as digging into compatibility problems without having access to the\r
+source code is too time-consuming. Additionally, experience has shown that\r
+often, the software in question is responsible for the issue. Please raise an\r
+issue with the software in question, not i3.</p></div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_obtaining_the_debug_logfile">4. Obtaining the debug logfile</h2>\r
+<div class="sectionbody">\r
+<div class="admonitionblock">\r
+<table><tr>\r
+<td class="icon">\r
+<div class="title">Caution</div>\r
+</td>\r
+<td class="content">\r
+<div class="paragraph"><p>Logs may contain sensitive information, so please inspect the log before\r
+submitting it. Logs may be viewed by anyone, once posted. If you choose to\r
+redact the log, make an effort not to discard information which may be relevant\r
+to the issue you are reporting.</p></div>\r
+<div class="paragraph"><p>The best way to avoid submitting such information is to only run the necessary\r
+steps to reproduce the behavior when saving the log file. This will also make\r
+analyzing the log file easier.</p></div>\r
+</td>\r
+</tr></table>\r
+</div>\r
<div class="paragraph"><p>No matter whether i3 misbehaved in some way without crashing or whether it just\r
crashed, the logfile provides all information necessary to debug the problem.</p></div>\r
-<div class="paragraph"><p>To save a compressed version of the logfile (suitable for attaching it to a\r
-bugreport), use:</p></div>\r
+<div class="paragraph"><p>To upload a compressed version of the logfile (for a bugreport), use:</p></div>\r
<div class="listingblock">\r
<div class="content">\r
-<pre><tt>DISPLAY=:0 i3-dump-log | gzip -9c > /tmp/i3.log.gz</tt></pre>\r
+<pre><tt>DISPLAY=:0 i3-dump-log | bzip2 -c | curl --data-binary @- http://logs.i3wm.org</tt></pre>\r
</div></div>\r
<div class="paragraph"><p>This command does not depend on i3 (it also works while i3 displays\r
the crash dialog), but it requires a working X11 connection.</p></div>\r
+<div class="paragraph"><p>After running it, you will get a URL to the logfile. Please include that URL in\r
+your bug report.</p></div>\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_compiling_with_debug_symbols">4. Compiling with debug symbols</h2>\r
+<h2 id="_on_crashes_obtaining_a_backtrace">5. On crashes: Obtaining a backtrace</h2>\r
<div class="sectionbody">\r
+<div class="paragraph"><p>When i3 crashes, it will display a dialog stating “i3 just crashed”, offering\r
+you to save a backtrace to a text file.</p></div>\r
<div class="paragraph"><p>To actually get useful backtraces, you should make sure that your version of i3\r
is compiled with debug symbols:</p></div>\r
<div class="listingblock">\r
which is stripped, please check whether your distribution provides debug\r
symbols (package <tt>i3-wm-dbg</tt> on Debian for example) or if you can turn off\r
stripping. If nothing helps, please build i3 from source.</p></div>\r
-</div>\r
-</div>\r
-<div class="sect1">\r
-<h2 id="_obtaining_a_backtrace">5. Obtaining a backtrace</h2>\r
-<div class="sectionbody">\r
<div class="paragraph"><p>Once you have made sure that your i3 is compiled with debug symbols and the C\r
debugger <tt>gdb</tt> is installed on your machine, you can let i3 generate a\r
backtrace in the crash dialog.</p></div>\r
length limitations) or flood kicks.</p></div>\r
</div>\r
</div>\r
+<div class="sect1">\r
+<h2 id="_debugging_i3bar">7. Debugging i3bar</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>To debug i3bar problems, add <tt>verbose yes</tt> to all <tt>bar {}</tt> blocks in your i3\r
+config, reload your config and then restart all i3bar instances like this:</p></div>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ i3 reload\r
+$ killall i3bar\r
+$ for c in $(i3-msg -t get_bar_config | python -c \\r
+ 'import json,sys;print("\n".join(json.load(sys.stdin)))'); do \\r
+ (i3bar --bar_id=$c >i3bar.$c.log 2>&1) & \\r
+ done;</tt></pre>\r
+</div></div>\r
+<div class="paragraph"><p>There will now be <tt>i3bar.*.log</tt> files in your current directory that you can provide\r
+in your bug report.</p></div>\r
+</div>\r
+</div>\r
</div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer" lang="de">\r