小编ven*_*s.w的帖子

在jenkins中使用gtest

我在Jenkins中使用google测试成功运行了我的单元测试,但我不知道如何显示gtest生成的.xml文件.据说gtest满足JUnit格式,所以我设置如下:

截图

但它最终会在建筑物后出现错误.

未找到任何测试报告文件.配置错误?
构建步骤'发布JUnit测试结果报告'将构建结果更改为FAILURE
完成:FAILURE

googletest jenkins

24
推荐指数
2
解决办法
3万
查看次数

哪个部分的ELF文件必须加载到内存中?

可执行文件的ELF文件有一个程序(段)标题和一个节头,可以看到readelf -a,这是一个例子:

在此输入图像描述

在此输入图像描述

上面的两张图分别是节标题和节目(段)标题.可以看出,段头由若干段头组成,用于将程序加载到存储器中.

是否只需将.text,.rodata,.data,.bss部分加载到内存中?

段中的所有其他部分(例如,第3段中的.ctors,.dtors .jcr)是否用于对齐?

c linux memory elf

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

什么时候"选择更新"锁定和解锁?

这是我的伪代码:

re = [select **result** from table where **condition**=key for update]

if[re satisfies]
{
    delete from table where **condition** = key;
}

commit
Run Code Online (Sandbox Code Playgroud)

我想询问条件是否等于"key"的行是否已被删除,"select for update"阻止的锁是否可以自动解锁,这意味着如果此时另一个进程进入并选择相同的"密钥" "它不能被这个阻挡?

database postgresql locking

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

旋转锁有问题吗?

这是我的自旋锁实现,但它似乎无法保护关键代码.我的实施有问题吗?

static __inline__ int xchg_asm(int* lock, int val) 
{
  int ret; 
  __asm__ __volatile__(
    LOCK "movl (%1),%%eax; 
    xchg (%1),%2; 
    movl %%eax, %0" :"=m" (ret) :"d"(lock), "c"(val)
  );
  return ret; 
}
void spin_init(spinlock_t* sl) 
{ 
  sl->val = 0; 
} 
void spin_lock(spinlock_t* sl) 
{ 
  int ret; 
  do { 
    ret = xchg_asm(&(sl->val), 1); 
  } while ( ret==0 ); 
}

void spin_unlock(spinlock_t* sl) 
{
  xchg_asm(&(sl->val), 0);
}
Run Code Online (Sandbox Code Playgroud)

linux x86 assembly kernel linux-kernel

11
推荐指数
1
解决办法
1104
查看次数

ELF文件的.bss部分应该在哪里占用内存?

众所周知,.bss段没有存储在磁盘中,但是内存中的.bss段应该初始化为零.但它应该在记忆中的哪个位置?是否有任何信息显示在ELF标题中或者.bss部分可能出现在数据部分旁边,还是其他什么?

c linux memory elf

8
推荐指数
2
解决办法
4050
查看次数

ELF头和进程虚拟内存中的不同地址

我在linux下通过pmap看到进程映像:

08048000       0       4       0 r-x--  [my program]

08049000       0       4       4 rw---  [my program]
Run Code Online (Sandbox Code Playgroud)

上面的三个段是代码段、rodata段和数据段,它们都是按照PAGESIZE(4K)对齐的,但是当我输入命令objdump -h时,ELF头显示如下:

read-only code segment
Load off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12
     filesz 0x00000448 memsz 0x00000448 flags r-x

read/write data segment
Load off 0x00000448 vaddr 0x08049448 paddr 0x08049448 align 2**12
     filesz 0x000000e8 memsz 0x00000104 flag rw-
Run Code Online (Sandbox Code Playgroud)

据说ELF头中,代码段和数据段分别从虚拟地址0x08048000、0x049448开始寻址,这与内存中的进程映像不同。我知道代码/数据段应该分配给不同的PAGESIZE,这可以给他们不同的保护权限。但是,如果真实的虚拟文件与 elf 二进制文件不同,程序如何执行呢?

operating-system kernel memory-management process elf

6
推荐指数
1
解决办法
2536
查看次数

操作系统如何知道物理内存的实际大小?

当计算机启动时加载操作系统时,操作系统如何知道硬件信息,是否有一些io指令或引导程序从BIOS中获取信息.

linux operating-system kernel memory-management

6
推荐指数
2
解决办法
1786
查看次数

为什么来自页面错误处理程序的iret会产生中断13(一般保护错误)和错误代码0x18?

我自己编写内核,在第一页错误中断处理程序之后,当执行IRET时,它会导致中断13(一般保护),错误代码为0x18.我不知道出了什么问题,堆栈上推送的内容来自cpu.

这是中断发生时的寄存器状态,以及存储寄存器的存储器.此外,IRET从页面错误中断处理程序返回.

确保在执行IRET和发生中断之前%ESP是相同的.

在此输入图像描述

在此输入图像描述

x86 assembly kernel

6
推荐指数
2
解决办法
2706
查看次数

什么时候应该分配到ENOMEM?

当内存用完时,内核会杀死以下程序.我想知道什么时候应该将全局变量分配给"ENOMEM".

#define MEGABYTE 1024*1024
#define TRUE 1
int main(int argc, char *argv[]){

    void *myblock = NULL;
    int count = 0;

    while(TRUE)
    {
            myblock = (void *) malloc(MEGABYTE);
            if (!myblock) break;
            memset(myblock,1, MEGABYTE);
            printf("Currently allocating %d MB\n",++count);
    }
    exit(0);
}
Run Code Online (Sandbox Code Playgroud)

c linux malloc linux-kernel

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

关于inet_ntoa()的一些事情

我使用函数写一个服务器char* inet_ntoa(struct in_addr in),当我包括报头 <sys/socket.h><netinet/in.h>,可执行的二进制可以用编译器警告生成,但段发生故障,当程序处理从返回字符串inet_ntoa.但是当我添加标题时,<arpa/inet.h>,一切似乎都没问题.

怎么了?

c unix linux

5
推荐指数
1
解决办法
1万
查看次数