小编nit*_*nms的帖子

如何为每个线程确定Linux内核任务的堆栈指针?

我正在研究一种有时会劫持应用程序执行的工具,包括在不同的堆栈中工作.

我正在尝试让内核在执行某些系统调用时总是看到应用程序堆栈,这样它就会在/ proc/pid/maps中的正确位置打印[stack]限定符.

但是,简单地修改系统调用周围的esp似乎是不够的.当我在"cat/proc/self/stat"上使用我的工具时,我看到kstkesp(这里的条目29)有时具有我想要的值,但有时会有一个不同的值,对应于我的备用堆栈.

我想了解:

  1. 如何确定/ proc/self/stat:29中的值?
  2. 我可以修改它,以便它可靠地具有适当的值吗?
  3. 如果2很难回答,你会建议我在哪里理解为什么这个值间歇性地不正确?

system-calls linux-kernel procfs

10
推荐指数
1
解决办法
437
查看次数

在Visual Studio中缺少析构函数?

我写了以下程序:

// Example program
#include <iostream>
#include <string>
#include <exception>

struct A {
    A() {
        std::cout << "A ctor" << std::endl;

    }

    ~A() { 
        std::cout << "A dtor" << std::endl;
        try {
            throw std::exception();
        } catch (std::exception &e) {
            std::cout << "Internal exception caught" << std::endl;
        }
    }
};

int main()
{
    try {
        A a;
        throw std::exception();
    } catch (std::exception &e) {
        std::cout << "External exception caught" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

我预期的输出是:

A ctor
A dtor
Internal exception caught …
Run Code Online (Sandbox Code Playgroud)

c++ destructor exception-handling visual-studio language-lawyer

10
推荐指数
1
解决办法
594
查看次数

控制在什么情况下从用户空间传递到Linux内核空间?

我试图了解哪些事件可以导致从用户空间到Linux内核的转换.如果相关,则此问题的范围可以限制为x86/x86_64体系结构.

以下是我所知道的一些过渡源:

  • 系统调用(包括访问设备)导致从用户空间到内核空间的上下文切换.
  • 中断将导致上下文切换.据我所知,这还包括调度程序抢占,因为调度程序通常依赖于计时器中断来完成其工作.
  • 信号.似乎至少有一些信号是使用中断实现的,但我不知道是否有一些信号是以不同方式实现的,所以我将它们单独列出来.

我在这里问两件事:

  1. 我错过了任何用户空间 - >内核路径吗?
  2. 这些上下文切换涉及哪些代码路径?

linux x86 linux-kernel

7
推荐指数
1
解决办法
484
查看次数

通过 Web API 中的属性限制 OData $filter

我只想允许在 OData 查询选项中使用某些属性$filter

我看到有一个AllowedOrderByProperties参数EnableQueryAttribute,但我没有找到另一个 $filter 参数。我刚刚错过了吗?如果没有,需要怎样实施?

c# odata asp.net-web-api

4
推荐指数
1
解决办法
2524
查看次数

如何在盐中调用archive.tar?

我正在尝试解压盐状态文件中的文件.这是相关的状态:

install-file:
#unpack
  archive.tar:
    - options: xjf
    - tarfile: /opt/path/to/file.tar.bz
    - dest: /opt/path/to/
    - watch:
      - file: /opt/path/to/file.tar.bz
#get files
  file.managed:
    - source: salt://pkgs/path/to/file.tar.bz
    - name: /opt/path/to/file.tar.bz
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下错误:

    State: - archive
    Name:      install-sdk
    Function:  tar
        Result:    False
        Comment:   State archive.tar found in sls pkgs.android is unavailable
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?我很确定这不是版本问题.

tar salt-stack

2
推荐指数
1
解决办法
2895
查看次数