The TL;DR is that you have to exec —privileged and execute dlv attach within the container then tell VSCode to connect. I’ll look up my notes tomorrow and post more details.
firelizzard
Attaching to and debugging a process most certainly does work. I did it yesterday. Your issue is that Go doesn’t have any way of telling the process to pause until a debugger attaches. Which is frustrating but not the same issue.
Specifically for debugging stdin, by far the easiest way to do that (in VSCode) is "console": "integratedTerminal"
. Another comment links a stack overflow answer that includes other options.
If a spec tells me I should do something that makes my code less readable in my opinion I am going to ignore the spec every time.
AppArmor is part of the kernel. Why does it require patches?
GitLab, Inc is a business and it’s not run by idiots. If federation was going to make them a bunch of money, they’d put a team on it. Relying on an outside group to execute your business goals is terrible management. It’s clear federation is not one of their business goals.
They may advertise it, but they’d be working on it themselves if they thought it would bring in serious revenue.
GMT doesn’t have daylight savings but London does
IMO that list is the obvious answer to “which packages can’t be removed without breaking the system”. Sufficiently obvious that I consider your insistence on specific “requirements” to be obnoxious. Though for that specific phrasing I would not include the terminal emulator or file browser. Using a system without them would be annoying but entirely doable.
You seem to be implying that applications could be considered basic functions. I can understand that perspective, but an application such as a music player or browser is certainly not a basic function of the OS, and I think it's a stretch to call those a basic function of the desktop environment. Maybe a better word is 'essential'. User applications are not essential to the OS, and the only applications I consider essential to the desktop environment are a terminal and a file browser, though the last one is negotiable. Of course things like the system setting app (or whatever GNOME calls it) are essential, but that's a component of the desktop environment and not a user application. So my list is:
- The kernel
- The init system
- Essential system components and services such as dbus and pipewire without which the OS and/or desktop environment will be degraded or not function.
- A terminal emulator app
- A file manager app
The obvious answer is packages that aren’t essential for basic functions of the OS/desktop environment.
I have no issue with their drivers working with their cards. I have issues using a proprietary, out of tree driver that taints my kernel and forces me to jump through hoops to get it to work whenever I recompile my kernel, which happens maybe once a month when Gentoo’s kernel source package is updated.
Also I use Wayland (because that’s what KDE defaults to).
Sorry, I forgot about this. I've attached my full configuration at the end. The steps are:
docker exec --privileged -it container_name bash
.--privileged
is required to make delve work. I don't entirely remember why.-it
is something like --interactive and --terminal, it's what you need to get a proper interactive shell.container_name
is the name of your container.bash
can also besh
orpwsh
or whatever shell your container has (hopefully it has one).dlv attach PID --headless --listen=:2345 --accept-multiclient --api-version=2
.PID
is the ID of the process you want to debug. This should be1
if you're debugging the main process of the container.--listen=:2345
says to listen on (TCP) port 2345 on all interfaces (0.0.0.0)ssh ${USER}@${SERVER} -NL LOCAL:2345:REMOTE:2345
.LOCAL
is the local IP to listen on, usuallylocalhost
. When a process connects to your local IP, it will be forwarded to the remote.REMOTE
is the remote IP to connect to, this should be the IP of your container. When a connection is forwarded from your local machine, this is where it is forwarded to. My containers are set up with--net host
so I can uselocalhost
asREMOTE
but that's not the default so you may have to usedocker inspect
to figure out your container's IP.I also included the path substitution configs I use. I generally debug these by pausing the target, clicking on something in the stack trace, seeing what path it tries to load, then adjusting the substitute path so that it loads the correct file.