小编Him*_*har的帖子

使用LLVM检测C/C++代码

我刚刚读到了LLVM项目,它可以用来使用LLVM前端的分析器Clang对C/C++代码进行静态分析.我想知道是否可以使用LLVM提取源代码中对内存的所有访问(变量,本地和全局).

LLVM中是否存在任何内置库,我可以使用它来提取此信息.如果不是,请建议我如何编写函数来做同样的事情.(现有的源代码,参考,教程,示例...)我想到的是,我首先将源代码转换为LLVM bc,然后将其设置为做分析,但不知道如何做到这一点.


我试图找出自己应该使用哪种IR(Clang的抽象语法树(AST)或LLVM的SSA中间表示(IR).),但无法确定要使用哪一个.这是我想要做的.给定任何C/C++程序(如下面给出的那样),我试图在每个读/写内存的指令之前和之后插入一些函数的调用.例如,考虑下面的C++程序(Account.cpp)

#include <stdio.h>

class Account {
  int balance;

public:
  Account(int b) {
    balance = b;
  }

  int read() {
    int r;
    r = balance;
    return r;
  }

  void deposit(int n) {
    balance = balance + n;
  }

  void withdraw(int n) {
    int r = read();
    balance = r - n;
  }
};

int main () {
  Account* a = new Account(10);
  a->deposit(1);
  a->withdraw(2);
  delete a;
}
Run Code Online (Sandbox Code Playgroud)

所以在仪器之后我的程序应该是这样的:

#include <stdio.h>

class Account {
  int balance;

public:
  Account(int b) …
Run Code Online (Sandbox Code Playgroud)

c++ instrumentation static-analysis llvm clang

17
推荐指数
1
解决办法
7331
查看次数

使用LLVM检测C/C++代码

我想写一个LLVM传递来检测每个内存访问.这是我想要做的.

给定任何C/C++程序(如下面给出的那样),我试图在每个读/写内存的指令之前和之后插入一些函数的调用.例如,考虑下面的C++程序(Account.cpp)

#include <stdio.h>

class Account {
int balance;

public:
Account(int b)
{
   balance = b;   
}
~Account(){ }

int read() 
{
  int r;  
  r = balance;   
  return r;
}

void deposit(int n) 
{   
  balance = balance + n;   
}

void withdraw(int n) 
{
  int r = read();   
  balance = r - n;   
}
};

int main ()
{ 
  Account* a = new Account(10); 
  a->deposit(1);
  a->withdraw(2);  
  delete a; 
}
Run Code Online (Sandbox Code Playgroud)

所以在仪器之后我的程序应该是这样的:

#include <stdio.h>

class Account 
{
  int balance;

public:
Account(int b) …
Run Code Online (Sandbox Code Playgroud)

c c++ instrumentation static-analysis

11
推荐指数
2
解决办法
4557
查看次数

使用php将txt文件导入postgres时出现问题

我试图使用"\ copy"命令从php导入txt/csv文件到我的postgres数据库.我不能使用COPY而不是\ copy,因为我需要它作为psql客户端执行.我的代码是:

$query = '\\'.'copy data1 FROM "data1.txt" WITH CSV HEADER DELIMITER AS "," QUOTE AS "^"';

$result = pg_query($conn,$query);
if (!$result) {
  echo "cannot copy data\n";
} else {
  echo "SUCCESS!";
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个PHP文件时,我收到此错误:

PHP Warning:  pg_query(): Query failed: ERROR:  syntax error at or near "\"
LINE 1: \copy data1 FROM "data1.txt" WITH ...
    ^ in script.php on line 30
Run Code Online (Sandbox Code Playgroud)

php postgresql file-io postgresql-copy

3
推荐指数
1
解决办法
3310
查看次数