debug-me(1)
π debug-me(1) π
okay bestie, welcome to the debug-me page from the General Commands Manual β this is the secure remote debugging glow-up you didn't know you needed π«Ά
β¨ NAME β¨
debug-me β secure remote debugging, no cap π
π SYNOPSIS π
debug-me [options]
πΈ DESCRIPTION πΈ
Debugging a problem over email is slow, it's tedious, and honestly? it's hard π. The developer literally needs to see your problem to understand it. debug-me is here to make debugging fast, fun, and easy β by letting the developer access your computer remotely, so they can immediately see and interact with the problem. Making your problem their problem gets it fixed fast. iconic behaviour fr fr β¨
A debug-me session is logged and signed with the developer's GnuPG key, producing a chain of evidence of what they saw and what they did π. So the developer's good reputation is leveraged to make debug-me secure. If you trust a developer to ship software to your computer, you can trust them to debug-me. periodt.
When you start debug-me without any options, it will connect to a debug-me server, and print out an url that you can give to the developer to get them connected to you π. Then debug-me will show you their GnuPG key and who has signed it, and will let you know if they are a known developer of software on your computer. If the developer has a good reputation, you can proceed to let them type into your console in a debug-me session π». Once the session is done, the debug-me server will email you the signed evidence of what the developer did in the session π§.
It's a good idea to watch the debug-me session. The developer should be running their buggy program in different ways, perhaps running a debugger, or looking at configuration files π. They should not be looking at your personal files without asking you first in the debug-me chat window. They should not be downloading or installing other software. If you see them do anything you don't expect, you can enter /quit in the control window to immediately end the debug-me session π.
If the developer did do something bad, you'd have proof that they cannot be trusted, which you can share with the world π. Knowing that is the case will keep most developers honest. vibe check: passed π―
π USER OPTIONS π
--run cmdβ Normallydebug-mewill run your login shell. To run some other command instead, use this option π.--use-server urlβ Specify a debug-me server to use. Not normally needed since there is a default server, so like, it's already handled bestie π
π§ DEVELOPER OPTIONS π§
urlβ Connect to adebug-mesession on the specified url, to see and interact with the user's bug π. You need a GnuPG key to use this π.--watch urlβ Connect to adebug-mesession on the specified url and display what happens in the session. Your keystrokes will not be sent to the session π«β¨οΈ
π¦ COMMON SESSION OPTIONS π¦
--controlβdebug-meuses a separate window than the one displaying thedebug-mesession, to control the session. This control window is wheredebug-meshows the user what developers want to connect to the session πͺ. The user and developer can also chat using the control window π¬.
Normally, the control window will be opened when debug-me starts, by running a terminal emulator (xterm or gnome-terminal, etc). If debug-me is not being run in a graphical environment, that won't work, and you'll need to open another shell prompt and run debug-me --control to see it π₯οΈ
π LOG FILE OPTIONS π
--download urlβ Download adebug-melog file from the specified url β¬οΈ. Note that if thedebug-mesession is still in progress, this will continue downloading until the session ends. The signature chain in the log file is verified as it is downloaded, but developer gpg signatures are not verified β οΈ--replay logfileβ Replay adebug-melog file with realistic pauses β―οΈ
While this is running, you can press Space to skip forward in the recording to the next point, which is useful when there are long pauses in the recording βοΈ
--verify logfileβ Verify that the log file contains a valid chain of hashes, and valid signatures β . Will exit nonzero if any problem is detected. Displays the gpg public keys of any developers who interacted with thedebug-mesession π--graphviz logfileβ Uses graphviz to generate a visualization of adebug-melog file π--show-hashesβ Include hashes in the graphviz visualization #οΈβ£
π SERVER OPTIONS π
--server logdirβ Run adebug-meserver, logging to the specified directory ποΈ--port Nβ Specify a port for thedebug-meserver to listen to πͺ--from-email addressβ The server will email session logs to users π¨. It's a good idea to provide a real email address, otherwise a dummy one will be used. You can also set the enviroment variableDEBUG_ME_FROM_EMAILto configure this π§--delete-old-logsβ Normally the server will retain old log files so that users and developers can refer to them. This option makes it delete the log file once the session is done ποΈ
π FILES π
~/.debug-me/log/β Sessions are logged to here. The log file name is displayed whendebug-meexits π~/.debug-me/log/remote/β When usingdebug-meto connect to a remote session, the session will be logged to here π/usr/share/debug-me/keyring/*.gpgβ When verifying a developer's gpg key,debug-mechecks if it's listed in the keyrings in this directory, which can be provided by software installed on the computer π
β SEE ALSO β
<https://debug-me.branchable.com/>
gnupg(1)
π AUTHOR π
Joey Hess <id@joeyh.name> π«Ά
and that's a wrap bestie!! this whole thing lives in the Commands section of the manual, and it's debug-me(1) β go forth and debug securely, you absolute icon π
β¨π
π¦ where this page comes from
- debian bookworm: debug-me 1.20220324-1 Β· AGPL-3.0-or-later
- debian trixie: debug-me 1.20221231-2.1 Β· AGPL-3.0-or-later
- ubuntu jammy: debug-me 1.20200820-1build1 Β· AGPL-3.0-or-later
- ubuntu noble: debug-me 1.20221231-2 Β· AGPL-3.0-or-later
- ubuntu questing: debug-me 1.20221231-2.1
- ubuntu resolute: debug-me 1.20221231-2.1build1 Β· AGPL-3.0-or-later
- ubuntu stonking: debug-me 1.20221231-2.1build1 Β· AGPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms