I need to debug a c++ program with VSCode and GDB on Linux and the program requires root permission in order to run properly. This is related with hardware access and therefore hardly believe any work around exist.
In this circumstances, how could I debug the program in VSCode and GDB, the program is built by CMake, and therefore CMake Tools debug is preferable but not required.
I have already tired solution specified below;
Vscode/Cmake tools - how can I attach debugger to a program that requires root privillege?
with following output (issue).
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/usr/bin/gdb’ as the super user
Multiple identities can be used for authentication:
1. Ubuntu (ubuntu)
2. myuser,,, (myuser)
Choose identity to authenticate as (1-2): [1] + Stopped (tty input) “/home/myuser/gdb” --interpreter=mi --tty=${DbgTerm} 0<“/tmp/Microsoft-MIEngine-In-or3v3iwk.blv” 1>“/tmp/Microsoft-MIEngine-Out-o2vrpakv.czu”
You have stopped jobs.
It does not wait for identity selection but quit immediately.
What should be done to debug C++ program requires sudo permission to work properly in VSCode?
Related
heroku : File C:\Users\mar\AppData\Roaming\npm\heroku.ps1 cannot be loaded. The file C:\Users\mar\AppData\Roaming\npm\heroku.ps1 is not digitally
signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see
about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
This is the error I'm getting. I've tried running "heroku -v" within the cmd and it works there so I know it was installed correctly. However, when I run the same command in visual studio I get the above error. I'm running visual studio code in admin mode and I installed heroku from admin mode as well.
I also enabled developer mode in my computer settings.
You need to set the execution policy regardless of whether you are running in administrator mode or not for PowerShell.
You can read more about this here
You can also see that it's throwing an error with regards to execution policy. The error basically means that windows could not verify the identity of the user that created the script and is blocking you from running it because it may be harmful (based on the fact that it could not verify the identity of the file creator).
This is just a counter-measure to prevent malicious scripts from running automatically.
If you want to run the script I would suggest running
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
and then running the Heroku commands. The above script removes restrictions on script executions on the current logged in user.
I'm a beginner to Kubernetes, and I tried to understand the source code by debugging from GoLand IDE. Starting a cluster with the provided hack/local-up-cluster.sh script works fine, but I cannot debug in GoLand.
I've tried to edit Run -> EditConfigurations-> +Shell Script with the script path as hack/local-up-cluster.sh, the script could run successfully but it won't stop at any break point.
Can someone please help me on how to set the IDE to debug the code initiated by a shell script?
If you don't use the IDE to launch the process, then you can use the Run | Attach to process feature to attach the IDE debugger to an existing project.
Make sure that the compiled application has the optimizations turned off, if you are using Go 1.10+ the compiler flag is -gcflags="all=-N -l".
I have been trying to remotely debug an application which can only be run on a specific server because of hardware limitations. To normally run the program I would login to an ssh shell with X.11 forwarding enabled (-X option of ssh) and its QT interface will show up.
I have been trying to achieve the same but with no success while debugging via gdb with the gdbserver and the integrated gdb client of Eclipse IDE.
Is there a way to achieve this?
I have already tried to copy the settings of the system variables DISPLAY and XDG_RUNTIME_DIR of an ssh -X session (the later being empty) but with no success. Searching for it gives no relatable results (or I may need a hint on what to search).
It's not the cleanest solution, but you can manually set the DISPLAY variable in /etc/environment. Variables set in /etc/environment are available to the entire system. You'll need to reboot the server before gdb will see it.
See: https://help.ubuntu.com/community/EnvironmentVariables#A.2Fetc.2Fenvironment
Here's a one-liner to append your current DISPLAY variable
echo "DISPLAY=$DISPLAY" >> /etc/environment
As the title already summarizes:
How can I start a bash-script automatically, when the computer starts - ideally without the need to log in to windows - using the Microsoft Subsystem for Linux's Bash.
At the moment, this isn't supported, because the WSL session manager service will close after the last bash.exe wrapper instance closes. There are a few options, but the absolute simplest one at the moment is to use the run utility from the Xming developer and just add a shortcut to your startup folder (in the start menu) pointing to
run.exe bash.exe -c "/home/user/daemoninit.sh ; /bin/bash". Unfortunately, if your daemon initialization requires root access, for example, something like sshd, you will need to add an exception to sudoers that allows anybody to run the daemon with root privileges.
Also, there are problems getting it to run as a true Windows system service, since each lxss installation is user-specific. Some people have gotten it to run on system startup, but it launches in a separate Windows session for that user and makes it so you can't launch bash.exe in your current user session.
There is a scheduled task that is attached to a custom event in the EventLog, it executes the lines below:
reconnect.cmd
c:\windows\system32\rasphone -f "phone_book.pbk" -d "vpn_connection"
net stop my_windows_service
net start my_windows_service
The task ususally runs normally without errors. But sometimes it returns error The application failed to initialize properly (3221225794). The task is configured to run under system account so it is supposed to have all required permissions to run that batch script.
Why do I keep getting this error? What can cause it and how do I debug it?
edit: start in option
The task uses "D:\" as working directory/start in location. The reconnect.cmd script is located at "D:\". Can this be the cause?
I posted this article earlier today on how to decode errors Error 2147463168 when trying to bind to an AD User Object
//
// MessageId: STATUS_DLL_INIT_FAILED
//
// MessageText:
//
// {DLL Initialization Failed}
// Initialization of the dynamic link library %hs failed. The process is terminating abnormally.
//
#define STATUS_DLL_INIT_FAILED ((NTSTATUS)0xC0000142L)
3221225794=0xC0000142 (use calculator)
This should identify which process (cmd or rasphone) and which dll.
You can also start in a debugger.
windbg or ntsd (ntsd is a console program and maybe installed). Both are also from Debugging Tools For Windows.
Download and install Debugging Tools for Windows
http://msdn.microsoft.com/en-us/windows/hardware/hh852363
Install the Windows SDK but just choose the debugging tools.
Create a folder called Symbols in C:\
Start Windbg. File menu - Symbol File Path and enter
srv*C:\symbols*http://msdl.microsoft.com/download/symbols
then
windbg -o -g -G C:\windows\system32\cmd.exe /k d:\batfile.bat
You can press F12 to stop it and kb will show the call stack (g continues the program). If there's errors it will also stop and show them.
Don't know why but running tasks under SYSTEM account was the cause. When we changed the account simply to local admin tasks ran flawlessly.