€•3.Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ+/translations/zh_CN/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/zh_TW/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/it_IT/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ja_JP/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/ko_KR/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ+/translations/sp_SP/process/debugging/index”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh£sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1h¡hhhžhhŸŒE/var/lib/git/docbuild/linux/Documentation/process/debugging/index.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ,Debugging advice for Linux Kernel developers”h]”hŒ,Debugging advice for Linux Kernel developers”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒgeneral guides”h]”hŒgeneral guides”…””}”(hhÌhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hhÉhžhhŸh³h KubhŒcompound”“”)”}”(hhh]”hŒtoctree”“”)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”hŒprocess/debugging/index”Œentries”]”(NŒ4process/debugging/driver_development_debugging_guide”†”NŒ&process/debugging/gdb-kernel-debugging”†”NŒprocess/debugging/kgdb”†”NŒ+process/debugging/userspace_debugging_guide”†”eŒ includefiles”]”(híhïhñhóeŒmaxdepth”KŒcaption”NŒglob”‰Œhidden”‰Œ includehidden”‰Œnumbered”KŒ titlesonly”‰Œ rawentries”]”uh1hßhŸh³h K hhÜubah}”(h]”h ]”Œtoctree-wrapper”ah"]”h$]”h&]”uh1hÚhhÉhžhhŸh³h Nubeh}”(h]”Œgeneral-guides”ah ]”h"]”Œgeneral guides”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒsubsystem specific guides”h]”hŒsubsystem specific guides”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjhžhhŸh³h KubhÛ)”}”(hhh]”hà)”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”hhêhë]”NŒ0process/debugging/media_specific_debugging_guide”†”ahõ]”j-ah÷KhøNhù‰hú‰hû‰hüKhý‰hþ]”uh1hßhŸh³h Khj ubah}”(h]”h ]”jah"]”h$]”h&]”uh1hÚhjhžhhŸh³h Nubhµ)”}”(hhh]”(hº)”}”(hŒGeneral debugging advice”h]”hŒGeneral debugging advice”…””}”(hj:hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj7hžhhŸh³h KubhŒ paragraph”“”)”}”(hŒ“Depending on the issue, a different set of tools is available to track down the problem or even to realize whether there is one in the first place.”h]”hŒ“Depending on the issue, a different set of tools is available to track down the problem or even to realize whether there is one in the first place.”…””}”(hjJhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h Khj7hžhubjI)”}”(hŒ”As a first step you have to figure out what kind of issue you want to debug. Depending on the answer, your methodology and choice of tools may vary.”h]”hŒ”As a first step you have to figure out what kind of issue you want to debug. Depending on the answer, your methodology and choice of tools may vary.”…””}”(hjXhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K hj7hžhubeh}”(h]”Œgeneral-debugging-advice”ah ]”h"]”Œgeneral debugging advice”ah$]”h&]”uh1h´hjhžhhŸh³h Kubeh}”(h]”Œsubsystem-specific-guides”ah ]”h"]”Œsubsystem specific guides”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒ'Do I need to debug with limited access?”h]”hŒ'Do I need to debug with limited access?”…””}”(hjyhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjvhžhhŸh³h K$ubjI)”}”(hŒZDo you have limited access to the machine or are you unable to stop the running execution?”h]”hŒZDo you have limited access to the machine or are you unable to stop the running execution?”…””}”(hj‡hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K&hjvhžhubjI)”}”(hXoIn this case your debugging capability depends on built-in debugging support of provided distribution kernel. The :doc:`/process/debugging/userspace_debugging_guide` provides a brief overview over a range of possible debugging tools in that situation. You can check the capability of your kernel, in most cases, by looking into config file within the /boot directory.”h]”(hŒrIn this case your debugging capability depends on built-in debugging support of provided distribution kernel. The ”…””}”(hj•hžhhŸNh Nubh)”}”(hŒ3:doc:`/process/debugging/userspace_debugging_guide`”h]”hŒinline”“”)”}”(hjŸh]”hŒ,/process/debugging/userspace_debugging_guide”…””}”(hj£hžhhŸNh Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j¡hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hêŒ refdomain”j®Œreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆŒ reftarget”Œ,/process/debugging/userspace_debugging_guide”uh1hhŸh³h K)hj•ubhŒÊ provides a brief overview over a range of possible debugging tools in that situation. You can check the capability of your kernel, in most cases, by looking into config file within the /boot directory.”…””}”(hj•hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K)hjvhžhubeh}”(h]”Œ&do-i-need-to-debug-with-limited-access”ah ]”h"]”Œ'do i need to debug with limited access?”ah$]”h&]”uh1h´hh¶hžhhŸh³h K$ubhµ)”}”(hhh]”(hº)”}”(hŒ$Do I have root access to the system?”h]”hŒ$Do I have root access to the system?”…””}”(hjÖhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjÓhžhhŸh³h K1ubjI)”}”(hŒQAre you easily able to replace the module in question or to install a new kernel?”h]”hŒQAre you easily able to replace the module in question or to install a new kernel?”…””}”(hjähžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K3hjÓhžhubjI)”}”(hŒ—In that case your range of available tools is a lot bigger, you can find the tools in the :doc:`/process/debugging/driver_development_debugging_guide`.”h]”(hŒZIn that case your range of available tools is a lot bigger, you can find the tools in the ”…””}”(hjòhžhhŸNh Nubh)”}”(hŒ<:doc:`/process/debugging/driver_development_debugging_guide`”h]”j¢)”}”(hjüh]”hŒ5/process/debugging/driver_development_debugging_guide”…””}”(hjþhžhhŸNh Nubah}”(h]”h ]”(j­Œstd”Œstd-doc”eh"]”h$]”h&]”uh1j¡hjúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”hêŒ refdomain”jŒreftype”Œdoc”Œ refexplicit”‰Œrefwarn”ˆj¿Œ5/process/debugging/driver_development_debugging_guide”uh1hhŸh³h K6hjòubhŒ.”…””}”(hjòhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K6hjÓhžhubeh}”(h]”Œ#do-i-have-root-access-to-the-system”ah ]”h"]”Œ$do i have root access to the system?”ah$]”h&]”uh1h´hh¶hžhhŸh³h K1ubhµ)”}”(hhh]”(hº)”}”(hŒIs timing a factor?”h]”hŒIs timing a factor?”…””}”(hj/hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj,hžhhŸh³h K:ubjI)”}”(hXeIt is important to understand if the problem you want to debug manifests itself consistently (i.e. given a set of inputs you always get the same, incorrect output), or inconsistently. If it manifests itself inconsistently, some timing factor might be at play. If inserting delays into the code does change the behavior, then quite likely timing is a factor.”h]”hXeIt is important to understand if the problem you want to debug manifests itself consistently (i.e. given a set of inputs you always get the same, incorrect output), or inconsistently. If it manifests itself inconsistently, some timing factor might be at play. If inserting delays into the code does change the behavior, then quite likely timing is a factor.”…””}”(hj=hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jHhŸh³h K