mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
os: add debugger_present() for linux (#10257)
This commit is contained in:
parent
ab5a4cf4e5
commit
97b83a4986
@ -6,6 +6,8 @@ import strings
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/ptrace.h>
|
||||||
|
|
||||||
pub const (
|
pub const (
|
||||||
path_separator = '/'
|
path_separator = '/'
|
||||||
@ -64,6 +66,8 @@ fn C.getgid() int
|
|||||||
|
|
||||||
fn C.getegid() int
|
fn C.getegid() int
|
||||||
|
|
||||||
|
fn C.ptrace(u32, u32, voidptr, int) u64
|
||||||
|
|
||||||
pub fn uname() Uname {
|
pub fn uname() Uname {
|
||||||
mut u := Uname{}
|
mut u := Uname{}
|
||||||
utsize := sizeof(C.utsname)
|
utsize := sizeof(C.utsname)
|
||||||
@ -317,7 +321,15 @@ pub fn (mut f File) close() {
|
|||||||
C.fclose(f.cfile)
|
C.fclose(f.cfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[inline]
|
||||||
pub fn debugger_present() bool {
|
pub fn debugger_present() bool {
|
||||||
|
// check if the parent could trace its process,
|
||||||
|
// if not a debugger must be present
|
||||||
|
$if linux {
|
||||||
|
return C.ptrace(C.PTRACE_TRACEME, 0, 1, 0) == -1
|
||||||
|
} $else $if macos {
|
||||||
|
return C.ptrace(C.PT_TRACE_ME, 0, voidptr(1), 0) == -1
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user