Easy Way To Fix Kernel Module Debugging

Speed up your computer in minutes

  • 1. Download and install ASR Pro
  • 2. Launch the program and select the scan you want to run
  • 3. Click on the Restore button and wait for the process to finish
  • Download this software now to clean up your computer.

    In some cases, your system may display an error indicating how to debug a kernel module. There can be several reasons for this problem. To debug an entire module, you must first link the module, then tell GDB where the symbol file is, and then set the necessary breakpoints. So, first load the module. Included in the source code is a final simplified shell script called loadModule that loads a module and creates a specific device if it doesn’t actually exist.

    </p> <nav aria-label="Top Navigation" role="Navigation"> Linux kernel </nav> <div> <div> <div itemscope="itemscope" itemtype="http://schema.org/Article" role="main"> <div itemprop="itemBody"> <div> <p>kgdb kernel debugger, hypervisors require QEMU or JTAG based hardwareInterfaces for debugging the kernel and existing Linux modules at runtimewith gdb. Gdb comes with a powerful scripting GUI for Python. inThe kernel provides a set ofhelper scripts that can sometimes simplify typical scripts.Kernel debugging steps. This is a special quick guide on how to combine it with the ability to useThem. It is geared towards QEMU/KVM VMs as a target, but can definitelySamples can also be inserted into added gdb stubs.</p> <div> <h2 id="10"><span class="ez-toc-section" id="Requirements%C2%B6"></span>Requirements¶<span class="ez-toc-section-end"></span></h2> <p><str></p> <li>gdb 7.2+ (recommended: 7.4+) with Python support (usually allowsfor distributions)</li> </ul> </div> <div> <h2 id="11"><span class="ez-toc-section" id="Configuration%C2%B6"></span>Configuration¶<span class="ez-toc-section-end"></span></h2> <p><str></p> <li> <p>Create a Linux virtual server for QEMU/KVM (see www.linux-kvm.org andwww.qemu.org for details). For cross development,http://landley.net/aboriginal/bin has a perfect image pool machine andBundles of tools that can help with customization.</p> </li> <li> <p>Build a kernel with CONFIG_GDB_SCRIPTS enabled, also exitCONFIG_DEBUG_INFO_REDUCED is disabled. If your architectural skill supportsCONFIG_FRAME_POINTER, leave it checked.</p> </li> <li> <p>Install the kernel you found on the KASLR guest tour, adding it just in case.”nokaslr” to this kernel command line.As an alternative, QEMU allows the kernel to be trained onstraight line – the core,-append using the -initrd command line options. This is usually helpful when you are alone.You don’t rely on modules. See QEMU for more details.this mode. In such a case, you should help collect most of the kernel.CONFIG_RANDOMIZE_BASE is disabled if the build supports KASLR.</p> </li> <li> <div style="box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;padding:20px 10px 20px 10px;"> <p><h2 id="1"><span class="ez-toc-section" id="How_do_I_debug_a_kernel_crash"></span>How do I debug a kernel crash?<span class="ez-toc-section-end"></span></h2> <p>cd to the kernel directory and run gdb on each of our “.o” files, which in this case have sd_remove() running on sd.o using the gdb “list” (gdb) write *(function +0xoffset) command, in in this case the target is sd_remove() and the offset is now 0x20 and gdb should give you the line number where you are experiencing the particular panic or whoops</p> </div> <p>Enable gdb stub for both</p> <p><block quote></p> <div><str></p> <li>for qemu/kvm, start the virtual machine by adding “-s” to the QEMU query string</li> </ul> </div> </blockquote> <p>or</p> <p><block quote></p> <div><str></p> <li>running shows “gdbserver” from someone’s QEMU monitorBracket</li> </ul> </div> </blockquote> </li> <li> <p>cd /path/to/linux-build</p> </li> <li> <p>Run gdb: gdb vmlinux</p> <p><img onerror="this.src='https://downloadchronicle.com/wp-content/uploads/2021/11/1pixel.jpg'" src="https://i.stack.imgur.com/pzWQD.png" style="margin-top:20px; margin-bottom:20px; display: block; margin: 0 auto;" alt="how to debug kernel module"></p> <p>Note. Some distributions may restrict autoloading to known security-related gdb scripts.directories. If gdb says it refuses to load vmlinux-gdb.py add:</p> <div> <div> <pre>add-autoload-safe-path /path/to/linux-assembly</pre> </div> </div> <p>in ~/.gdbinit. See the gdb help for details.</p> </li> <li> <p>Apply to all running guests:</p> <div> <div> <pre>(gdb) remote target:1234</pre> </div> </div> </li> </ul> </div> <div> <h2 id="12"><span class="ez-toc-section" id="Examples_For_Using_The_Gdb_Utilities_ProvidedOther_Linux%C2%B6"></span>Examples For Using The Gdb Utilities ProvidedOther Linux¶<span class="ez-toc-section-end"></span></h2> <p><str></p> <li> <div style="box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;padding:20px 10px 20px 10px;"> <p><h2 id="2"><span class="ez-toc-section" id="How_do_I_debug_kernel_QEMU"></span>How do I debug kernel QEMU?<span class="ez-toc-section-end"></span></h2> <p>Build someone’s Linux kernel that you want to debug directly.set to whom.Install the virtual machine.Completely replace the default VM kernel withthe version you created.Add the nokaslr kernel option.Create an icon entry from the vmlinux kernel image.Run the whole qemu with the following options.Start gdb, load the symbol file, and always add it to the qemu runtime.</p> </div> <p>Load symbols for units (and main core):</p> <div> <div> <pre>(gdb) lx symbolsDownload vmlinuxLook for modules in @0xfffffffa0020000: /home/user/linux/buildDownload /home/user/linux/build/net/netfilter/xt_tcpudp.koLoad @0xffffffffa0016000: /home/user/linux/build/net/netfilter/xt_pkttype.koDownload from @0xffffffffa0002000: /home/user/linux/build/net/netfilter/xt_limit.koDownload from @0xffffffffa00ca000: /home/user/linux/build/net/packet/af_packet.koLoading @ 0xffffffffa003c000: /home/user/linux/build/fs/fuse/fuse.ko...Boot from @0xffffffffa0000000: /home/user/linux/build/drivers/ata/ata_generic.ko</pre> </div> </div> </li> <li><div style="background: rgba(156, 156, 156, 0.07);margin:20px 0 20px 0;padding:20px 10px 20px 10px;border: solid 1px rgba(0,0,0,0.03);text-align: left;"><h2><span class="ez-toc-section" id="Speed_up_your_computer_in_minutes-2"></span>Speed up your computer in minutes<span class="ez-toc-section-end"></span></h2> <p>Is your PC running slow? Are you experiencing regular crashes and freezes? Then it's time to download <a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow">ASR Pro</a>! This powerful software will repair common Windows errors, protect your files from loss or corruption, and optimize your system for maximum performance. With <a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow">ASR Pro</a>, you can fix any Windows issue with just a few clicks - no technical expertise required! So why wait? Download <a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow">ASR Pro</a> today and enjoy a smooth, stable PC experience.</p> <li>1. Download and install <a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow">ASR Pro</a></li> <li>2. Launch the program and select the scan you want to run</li> <li>3. Click on the Restore button and wait for the process to finish</li> <br><a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow" alt="download"><img src="/wp-content/download22.png" style="width:340px;"></a></div> <p>Set a hard break on an unloaded function from the e component, for example:</p> <div> <div> <pre>(gdb) b "btrfs_init_sysfs" btrfs_init_sysfsactually defined function.Breakpoint waiting for a shared library to be loaded in the future? (g or gbreakpoint[n]) 1 (btrfs_init_sysfs) pending.</pre> </div> </div> </li> <li> <div style="box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;padding:20px 10px 20px 10px;"> <p><h2 id="4"><span class="ez-toc-section" id="What_is_kernel_level_debugging"></span>What is kernel level debugging?<span class="ez-toc-section-end"></span></h2> <p>The kernel debugger can be a full stub implementing low-level operations, with your own full debugger such as the GNU debugger (gdb) running on another machine and passing commands to the stub over a functional serial line or network access, or It can provide a capture string to properly use on the computer being debugged.</p> </div> <p>Continue targeting:</p> </li> <li> <p>I’d say load the module on the target and see if the symbols load correctly.breakpoint reached:</p> <div> <div><iframe loading="lazy" style="margin-top:20px; margin-bottom:20px; display: block; margin: 0 auto;" width="560" height="315" src="https://www.youtube.com/embed/2VcA5Wj7IvU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p> <pre>Download @0xfffffffa0034000: /home/user/linux/build/lib/libcrc32c.koDownload from @0xffffffffa0050000: /home/user/linux/build/lib/lzo/lzo_compress.koDownload @0xffffffffa006e000: /home/user/linux/build/lib/zlib_deflate/zlib_deflate.koLoading @ 0xffffffffa01b1000: /home/user/linux/build/fs/btrfs/btrfs.koStop point firstnew, btrfs_init_sysfs At() /home/user/linux/fs/btrfs/sysfs.c:3636 btrfs_kset is equal to kset_create_and_add("btrfs", NULL, fs_kobj);</pre> </div> </div> </li> <li> <p>Clear target kernel’s log buffer:</p> <div> <div><img onerror="this.src='https://downloadchronicle.com/wp-content/uploads/2021/11/1pixel.jpg'" src="/posts/how-to-debug-kernel-module.png" style="margin-top:20px; margin-bottom:20px; display: block; margin: 0 auto;" alt="how to debug kernel module"></p> <pre>(gdb) lx-dmesg[0.000000] Initialize the cgroup subsystem cpuset[0.000000] cgroup subsystem processor initialization[ 0.000000] Linux version 3.8.0-rc4-dbg+ (...[0.000000] Command line: root=/dev/sda2 vga=0x314[resume=/dev/sda1 0.000000] e820: BIOS provided physical memory allocation:[ 0.000000] BIOS-e820: 0x00000000000000000-0x000000000009fbff] [usable memory[0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] Reserved....</pre> </div> </div> </li> <li> <p>View the workspaces of the current task tree:</p> <div> <div></p> <div style="box-shadow: rgba(60, 64, 67, 0.3) 0px 1px 2px 0px, rgba(60, 64, 67, 0.15) 0px 1px 3px 1px;padding:20px 10px 20px 10px;"> <p><h2 id="3"><span class="ez-toc-section" id="How_do_I_enable_debugging_in_Linux_kernel"></span>How do I enable debugging in Linux kernel?<span class="ez-toc-section-end"></span></h2> <p>when a particular kernel is started and prompted to enable debug level messages by simply running dmesg -n 8 or echo 8 > /proc/sys/kernel/printk.</p> </div> <pre>(gdb) created $lx_current().pid1 dollar = 4998(gdb) p $lx_current().comm$2 is equal to "modprobe�00�00�00�00�00�00�00"</pre> </div> </div> </li> <li> <p>Enjoy per-processor work for the current or specific processor:</p> <div> <div> <pre>(gdb) p $lx_per_cpu("run queues").nr_running3 dollars = 1(gdb) $lx_per_cpu("run queues", p 2).nr_running$4 = B 0</pre> </div> </div> </li> <li> <p>dig htimers create container_of helper:</p> <div> <div> <pre>(gdb) specific $next = $lx_per_cpu("hrtimer_bases").clock_base[0].active.next(gdb) p *$container_of($next, "structure timer", "node")5 dollars = node matches node matches __rb_parent_color=18446612133355256072,rb_right=0x0 <irq_stack_union>, rb_left is 0x0 <irq_stack_union> , implicitly expires tv64=1835268000000 , _softexpires means tv64 includes 1835268000000 , the function is 0xffffffff81078232 <tick_sched_timer>, Base means 0xffff88003fd0d6f0, state = 1, start_pid means 0, start_site implies 0xffffffff81055c1f <hrtimer_start_range_ns+20>, start_comm - "swapper/2�00�00�00�00�00�00"</pre> </p> <a href="https://link.advancedsystemrepairpro.com/976b5403?clickId=downloadchronicle.com" target="_blank" rel="nofollow"> Download this software now to clean up your computer. </a> </p> <p><a href="https://downloadchronicle.com/pt/maneira-facil-de-resolver-a-depuracao-do-modulo-do-kernel/" class="translate">Maneira Fácil De Resolver A Depuração Do Módulo Do Kernel</a><br /> <a href="https://downloadchronicle.com/de/einfache-alternative-um-das-debuggen-von-kernelmodulen-zu-beheben/" class="translate">Einfache Alternative, Um Das Debuggen Von Kernelmodulen Zu Beheben</a><br /> <a href="https://downloadchronicle.com/nl/eenvoudige-manier-om-foutopsporing-in-kernelsegmenten-op-te-lossen/" class="translate">Eenvoudige Manier Om Foutopsporing In Kernelsegmenten Op Te Lossen</a><br /> <a href="https://downloadchronicle.com/pl/latwy-proces-naprawy-debugowania-modulu-jadra/" class="translate">Łatwy Proces Naprawy Debugowania Modułu Jądra</a><br /> <a href="https://downloadchronicle.com/sv/enkel-mojlighet-att-fixa-felsokning-av-karnelement/" class="translate">Enkel Möjlighet Att Fixa Felsökning Av Kärnelement</a><br /> <a href="https://downloadchronicle.com/fr/methode-simple-corriger-le-debogage-du-module-du-noyau/" class="translate">Méthode Simple – Corriger Le Débogage Du Module Du Noyau</a><br /> <a href="https://downloadchronicle.com/it/facile-alternativa-per-correggere-il-debug-dei-moduli-del-kernel/" class="translate">Facile Alternativa Per Correggere Il Debug Dei Moduli Del Kernel</a><br /> <a href="https://downloadchronicle.com/ko/%ec%bb%a4%eb%84%90-%eb%aa%a8%eb%93%88-%eb%94%94%eb%b2%84%ea%b9%85%ec%9d%84-%ec%88%98%ec%a0%95%ed%95%98%eb%8a%94-%eb%8d%b0-%eb%8f%84%ec%9b%80%ec%9d%b4-%eb%90%98%eb%8a%94-%ec%89%ac%ec%9a%b4-%eb%b0%a9/" class="translate">커널 모듈 디버깅을 수정하는 데 도움이 되는 쉬운 방법</a><br /> <a href="https://downloadchronicle.com/ru/%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be%d0%b5-%d1%80%d0%b5%d1%88%d0%b5%d0%bd%d0%b8%d0%b5-%d0%b4%d0%bb%d1%8f-%d1%83%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d1%82%d0%bb%d0%b0%d0%b4/" class="translate">Простое решение для устранения отладки модуля ядра</a><br /> <a href="https://downloadchronicle.com/es/forma-facil-de-estrategia-este-plan-de-depuracion-del-modulo-del-nucleo/" class="translate">Forma Fácil De Estrategia. Este Plan De Depuración Del Módulo Del Núcleo</a></p> <div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img src="https://downloadchronicle.com/wp-content/uploads/dylanmorley.jpg" width="100" height="100" alt="Dylan Morley" itemprop="image"></div><div class="saboxplugin-authorname"><a href="https://downloadchronicle.com/author/dylanmorley/" class="vcard author" rel="author" itemprop="url"><span class="fn" itemprop="name">Dylan Morley</span></a></div><div class="saboxplugin-desc"><div itemprop="description"></div></div><div class="clearfix"></div></div></div><div class='yarpp yarpp-related yarpp-related-website yarpp-template-thumbnails'> <!-- YARPP Thumbnails --> <h3>Related posts:</h3> <div class="yarpp-thumbnails-horizontal"> <a class='yarpp-thumbnail' rel='norewrite' href='https://downloadchronicle.com/en/ipad-safari-enable-debug-console/' title='Enable Debugging And Debugging For IPad Safari Debug Console'> <img width="150" height="150" src="https://downloadchronicle.com/wp-content/uploads/2022/03/ipad-safari-enable-debug-console-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" alt="" loading="lazy" data-pin-nopin="true" srcset="https://downloadchronicle.com/wp-content/uploads/2022/03/ipad-safari-enable-debug-console-150x150.jpg 150w, https://downloadchronicle.com/wp-content/uploads/2022/03/ipad-safari-enable-debug-console-120x120.jpg 120w" sizes="(max-width: 150px) 100vw, 150px" /><span class="yarpp-thumbnail-title">Enable Debugging And Debugging For IPad Safari Debug Console</span></a> <a class='yarpp-thumbnail' rel='norewrite' href='https://downloadchronicle.com/en/linux-kernel-module-cpu-usage/' title='How To Fix Linux Kernel Module CPU Usage Problems?'> <img width="150" height="150" src="https://downloadchronicle.com/wp-content/uploads/2022/03/linux-kernel-module-cpu-usage-150x150.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="" loading="lazy" data-pin-nopin="true" srcset="https://downloadchronicle.com/wp-content/uploads/2022/03/linux-kernel-module-cpu-usage-150x150.png 150w, https://downloadchronicle.com/wp-content/uploads/2022/03/linux-kernel-module-cpu-usage-120x120.png 120w" sizes="(max-width: 150px) 100vw, 150px" /><span class="yarpp-thumbnail-title">How To Fix Linux Kernel Module CPU Usage Problems?</span></a> <a class='yarpp-thumbnail' rel='norewrite' href='https://downloadchronicle.com/en/debug-servlet-tomcat-eclipse/' title='How To Fix Eclipse Tomcat Servlet Debugging Easily'> <img width="150" height="150" src="https://downloadchronicle.com/wp-content/uploads/2022/02/debug-servlet-tomcat-eclipse-150x150.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="" loading="lazy" data-pin-nopin="true" srcset="https://downloadchronicle.com/wp-content/uploads/2022/02/debug-servlet-tomcat-eclipse-150x150.png 150w, https://downloadchronicle.com/wp-content/uploads/2022/02/debug-servlet-tomcat-eclipse-120x120.png 120w" sizes="(max-width: 150px) 100vw, 150px" /><span class="yarpp-thumbnail-title">How To Fix Eclipse Tomcat Servlet Debugging Easily</span></a> <a class='yarpp-thumbnail' rel='norewrite' href='https://downloadchronicle.com/en/how-to-debug-using-gdb-in-linux/' title='I Have A Problem Debugging With Gdb On Linux'> <img width="150" height="150" src="https://downloadchronicle.com/wp-content/uploads/2022/03/how-to-debug-using-gdb-in-linux-150x150.png" class="attachment-thumbnail size-thumbnail wp-post-image" alt="" loading="lazy" data-pin-nopin="true" srcset="https://downloadchronicle.com/wp-content/uploads/2022/03/how-to-debug-using-gdb-in-linux-150x150.png 150w, https://downloadchronicle.com/wp-content/uploads/2022/03/how-to-debug-using-gdb-in-linux-120x120.png 120w" sizes="(max-width: 150px) 100vw, 150px" /><span class="yarpp-thumbnail-title">I Have A Problem Debugging With Gdb On Linux</span></a> </div> </div> </div><!-- .entry-content --> <footer class="entry-footer"> <div class="apa-tag-list"><span class="apa-tag-list-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="apa-svg-icon apace-tag"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"></path><line x1="7" y1="7" x2="7.01" y2="7"></line></svg></span> <a href="https://downloadchronicle.com/tag/arm/" rel="tag">arm</a><a href="https://downloadchronicle.com/tag/debug-symbols/" rel="tag">debug symbols</a><a href="https://downloadchronicle.com/tag/drivers/" rel="tag">drivers</a><a href="https://downloadchronicle.com/tag/gdb/" rel="tag">gdb</a><a href="https://downloadchronicle.com/tag/kernel-panic/" rel="tag">kernel panic</a><a href="https://downloadchronicle.com/tag/lauterbach/" rel="tag">lauterbach</a><a href="https://downloadchronicle.com/tag/lib-modules/" rel="tag">lib modules</a><a href="https://downloadchronicle.com/tag/qemu/" rel="tag">qemu</a><a href="https://downloadchronicle.com/tag/raspberry-pi/" rel="tag">raspberry pi</a><a href="https://downloadchronicle.com/tag/serial-port/" rel="tag">serial port</a><a href="https://downloadchronicle.com/tag/trace32/" rel="tag">trace32</a><a href="https://downloadchronicle.com/tag/visual-studio/" rel="tag">visual studio</a><a href="https://downloadchronicle.com/tag/windbg/" rel="tag">windbg</a><a href="https://downloadchronicle.com/tag/windows/" rel="tag">windows</a><a href="https://downloadchronicle.com/tag/windows-kernel-mode/" rel="tag">windows kernel mode</a><a href="https://downloadchronicle.com/tag/xilinx/" rel="tag">xilinx</a></div> </footer><!-- .entry-footer --> </article><!-- #post-20339 --> <nav class="navigation post-navigation" aria-label="Posts"> <h2 class="screen-reader-text">Post navigation</h2> <div class="nav-links"><div class="nav-previous"><a href="https://downloadchronicle.com/pt/como-retornar-para-corrigir-problemas-de-bloqueio-de-virus-ao-usar-sites-de-antivirus/" rel="prev"><div class="apa-post-nav-prev-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="apa-svg-icon apace-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg></div> <span class="nav-title">Como Retornar Para Corrigir Problemas De Bloqueio De Vírus Ao Usar Sites De Antivírus</span></a></div><div class="nav-next"><a href="https://downloadchronicle.com/pt/maneira-facil-de-resolver-a-depuracao-do-modulo-do-kernel/" rel="next"><div class="apa-post-nav-next-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="apa-svg-icon apace-arrow-right"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></div> <span class="nav-title">Maneira Fácil De Resolver A Depuração Do Módulo Do Kernel</span></a></div></div> </nav> </main><!-- #main --> </div><!-- #content --> <div id="secondary" class="widget-area"> <section id="search-2" class="widget widget_search"><form role="search" method="get" class="search-form" action="https://downloadchronicle.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> </label> <input type="submit" class="search-submit" value="Search" /> </form></section><section id="block-2" class="widget widget_block"><ul class="wp-block-page-list"><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://downloadchronicle.com/contact/">Contact Us</a></li><li class="wp-block-pages-list__item"><a class="wp-block-pages-list__item__link" href="https://downloadchronicle.com/privacy-policy/">Privacy Policy</a></li></ul></section></div><!-- #secondary --> </div><!-- #content --> <footer id="colophon" class="site-footer"> <div class="footer-widget-area"> <div class="apa-container apa-footer-widget-container"> <div class="apa-footer-widget-column"> </div> <div class="apa-footer-widget-column"> </div> <div class="apa-footer-widget-column"> </div> </div><!-- .apa-container --> </div><!-- .footer-widget-area --> <div class="apa-footer-site-info"> <div class="apa-container"> <div class="apa-footer-info-container"> <div class="apa-owner-copyright"> Copyright © 2022 <a href="https://downloadchronicle.com/" title="Download Chronicle" >Download Chronicle</a>. </div><!-- .apa-owner-copyright --> <div class="apa-designer-credit"> <a href="https://wordpress.org/"> Proudly powered by WordPress </a> <span class="sep"> | </span> Theme: Apace by <a href="https://themezhut.com/themes/apace/">ThemezHut</a>. </div><!-- .apa-designer-credit --> </div><!-- .apa-footer-info-container --> </div><!-- .apa-container --> </div><!-- .site-info --> </footer><!-- #colophon --> </div><!-- #page --> <link rel='stylesheet' id='yarppRelatedCss-css' href='https://downloadchronicle.com/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=5.27.8' media='all' /> <script src='https://downloadchronicle.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=5.6.3' id='swv-js'></script> <script id='contact-form-7-js-extra'> var wpcf7 = {"api":{"root":"https:\/\/downloadchronicle.com\/wp-json\/","namespace":"contact-form-7\/v1"}}; </script> <script src='https://downloadchronicle.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=5.6.3' id='contact-form-7-js'></script> <script src='https://downloadchronicle.com/wp-content/themes/apace/js/navigation.js?ver=1.0.4' id='apace-navigation-js'></script> <script src='https://downloadchronicle.com/wp-content/plugins/easy-table-of-contents/vendor/smooth-scroll/jquery.smooth-scroll.min.js?ver=2.2.0' id='ez-toc-jquery-smooth-scroll-js'></script> <script src='https://downloadchronicle.com/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1' id='ez-toc-js-cookie-js'></script> <script src='https://downloadchronicle.com/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2' id='ez-toc-jquery-sticky-kit-js'></script> <script id='ez-toc-js-js-extra'> var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","width":"auto","scroll_offset":"30"}; </script> <script src='https://downloadchronicle.com/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.34-1664989499' id='ez-toc-js-js'></script> </body> </html>