Add debugging task for VS Code

This allows you to launch the command line program into a debugger. This
commit also tweaks the CI and fixes a small error in the build script.
This commit is contained in:
Conrad Kramer 2023-04-16 16:49:15 -04:00
parent 02efa85a19
commit b37086e8f6
6 changed files with 38 additions and 21 deletions

View file

@ -15,6 +15,8 @@ jobs:
include:
- os: ubuntu-latest
platform: Linux
packages:
- gcc-aarch64-linux-gnu
targets:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
@ -34,12 +36,19 @@ jobs:
runs-on: ${{ matrix.os }}
env:
DEVELOPER_DIR: /Applications/Xcode_14.2.app/Contents/Developer
CARGO_INCREMENTAL: 0
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
RUST_BACKTRACE: short
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ssh-key: ${{ secrets.DEPLOY_KEY }}
submodules: recursive
- name: Install Packages
if: matrix.os == 'ubuntu-latest'
shell: bash
run: sudo apt-get install -y ${{ join(matrix.packages, ' ') }}
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:

22
.vscode/launch.json vendored Normal file
View file

@ -0,0 +1,22 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"cargo": {
"args": [
"build",
"--bin=burrow",
],
"filter": {
"name": "burrow",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
]
}

View file

@ -46,7 +46,7 @@ async fn main() -> anyhow::Result<()> {
bindings.write_to_file(out_dir.join("wintun.rs"))?;
let mut library = Vec::new();
let platform = platforms::Platform::find(&env::var("TARGET")?).unwrap();
let platform = platforms::Platform::find(&std::env::var("TARGET")?).unwrap();
let arch = match platform.target_arch {
platforms::target::Arch::Arm => "arm",
platforms::Arch::AArch64 => "arm64",

View file

@ -2,6 +2,10 @@ use std::io::Result;
use std::ptr;
use widestring::{u16cstr, U16CString};
mod queue;
pub use queue::TunQueue;
pub struct TunInterface {
wintun: sys::wintun,
handle: sys::WINTUN_ADAPTER_HANDLE,

View file

@ -1,19 +1 @@
use crate::TunInterface;
use std::os::unix::io::{AsRawFd, IntoRawFd, RawFd};
pub struct TunQueue {
inner: crate::windows::sys::
inner: socket2::Socket,
}
impl AsRawFd for TunQueue {
fn as_raw_fd(&self) -> RawFd {
self.socket.as_raw_fd()
}
}
impl IntoRawFd for TunQueue {
fn into_raw_fd(self) -> RawFd {
self.socket.into_raw_fd()
}
}
pub struct TunQueue;