小编Sam*_*amB的帖子

如何在Mac上获取GNU的readlink -f的行为?

在Linux上,该readlink实用程序接受一个-f跟随其他链接的选项.这似乎不适用于Mac和可能基于BSD的系统.相当于什么?

这是一些调试信息:

$ which readlink; readlink -f
/usr/bin/readlink
readlink: illegal option -f
usage: readlink [-n] [file ...]
Run Code Online (Sandbox Code Playgroud)

macos freebsd sh

341
推荐指数
13
解决办法
11万
查看次数

如何在构建目标之外生成gcc调试符号?

我知道我可以使用-g选项生成调试符号.但是,符号将嵌入目标文件中.gcc可以在结果可执行文件/库之外生成调试符号吗?像Windows VC++编译器的.pdb文件一样.

debugging gcc pdb-files

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

防止将引用的程序集PDB和XML文件复制到输出

我有一个Visual Studio 2008 C#/ .NET 3.5项目,其中包含一个后期构建任务来压缩内容.但是我发现我还在输出目录(和ZIP)中获取引用的程序集'.pdb(debug)和.xml(文档)文件.

例如,如果MyProject.csproj引用YourAssembly.dll,并且在与DLL相同的目录中存在YourAssembly.xml和YourAssembly.pdb文件,它们将显示在我的输出目录(和ZIP)中.

我可以在ZIP'ing时排除*.pdb但我不能排除*.xml文件,因为我有相同扩展名的部署文件.

有没有办法阻止项目复制引用的程序集PDB和XML文件?

xml build visual-studio pdb-files

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

HintPath vs Visual Studio中的ReferencePath

到底是什么之间的区别HintPath在.csproj的文件和ReferencePath一个.csproj.user文件?我们试图提交一个约定,其中依赖DLL在"发布"svn repo中,并且所有项目都指向特定版本.由于不同的开发人员具有不同的文件夹结构,因此相对引用将不起作用,因此我们提出了一种方案,使用指向特定开发人员版本文件夹的环境变量来创建绝对引用.因此,在添加引用之后,我们手动编辑项目文件以使用环境变量将引用更改为绝对路径.

我注意到这可以通过HintPath和它完成ReferencePath,但我可以在它们之间找到的唯一区别HintPath是在构建时和ReferencePath项目加载到IDE时解决了.我不确定那是什么后果.我注意到VS有时会重写.csproj.user并且我必须重写它ReferencePath,但我不确定是什么触发了它.

我听说最好不要检查.csproj.user文件,因为它是特定于用户的,所以我想针对这一点,但我也听说过,HintPath如果加载了指定的DLL并不"保证"相同的DLL例如位于项目的输出目录中.有什么想法吗?

.net dependencies visual-studio

110
推荐指数
3
解决办法
9万
查看次数

如何使backtrace()/ backtrace_symbols()打印函数名称?

特定于Linux backtrace()backtrace_symbols()允许您生成程序的调用跟踪.但是,它只打印功能地址,而不是我的程序的名称.如何让它们也打印出函数名?我试着编译程序-g以及-ggdb.下面的测试用例打印出来:


    BACKTRACE ------------
    ./a.out() [0x8048616]
    ./a.out() [0x8048623]
    /lib/libc.so.6(__libc_start_main+0xf3) [0x4a937413]
    ./a.out() [0x8048421]
    ----------------------
    

我希望前两个项目也显示函数名称,foomain

码:

#include <execinfo.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>

static void full_write(int fd, const char *buf, size_t len)
{
        while (len > 0) {
                ssize_t ret = write(fd, buf, len);

                if ((ret == -1) && (errno != EINTR))
                        break;

                buf += (size_t) ret;
                len -= (size_t) ret;
        }
}

void print_backtrace(void)
{
        static const …
Run Code Online (Sandbox Code Playgroud)

c linux debugging backtrace

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

shell脚本杀死侦听端口3000的进程?

我想定义一个名为kill3000自动执行以下任务的bash别名:

$ lsof -i:3000

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ruby    13402 zero    4u  IPv4 2847851      0t0  TCP *:3000 (LISTEN)

$ kill -9 13402
Run Code Online (Sandbox Code Playgroud)

sockets linux bash kill

77
推荐指数
4
解决办法
7万
查看次数

适用于Android的VS代码.可能吗?

有人知道MS在Android平台上支持VS Code的计划吗?一般来说可能吗?

android visual-studio-code

64
推荐指数
6
解决办法
8万
查看次数

为什么C/C++的"#pragma once"不是ISO标准?

我目前正在开展一个大型项目并且维护所有这些包括警卫让我疯狂!手工编写是令人沮丧的浪费时间.虽然许多编辑可以生成包含警卫,但这并没有多大帮助:

  1. 编辑器根据文件名生成保护符号.如果在不同目录中具有相同文件名的标头,则会出现此问题.他们两个都会得到相同的包括后卫.将目录结构包含在保护符号中需要编辑器的一些奇特的方法,因为宏中的斜杠和反斜杠不是最好的.

  2. 当我必须重命名文件时,我应该重命名所有包含警戒(在ifndef中,定义和理想的endif的注释).烦人.

  3. 预处理器充斥着大量的符号,而不知道它们的含义.

  4. 然而,定义包含一次,编译器每次遇到标题包含时仍会打开标题.

  5. 包含防护不适合命名空间或模板.实际上他们正在颠覆命名空间!

  6. 你的守卫符号有可能不是唯一的.

当程序在单个目录中包含少于1000个标头时,它们可能是可接受的解决方案.但是现在呢?它很古老,与现代编码习惯无关.令我困扰的是,这个问题几乎可以通过#pragma once指令完全解决.为什么不是标准?

c c++ pragma include-guards

50
推荐指数
4
解决办法
7900
查看次数

如何使用curl将多个参数传递给cron作业?

我正在运行两个cron工作:

这个执行没有问题:

curl -sS http://example.com/cronjob.php?days=1
Run Code Online (Sandbox Code Playgroud)

但这根本不会发生:

curl -sS http://example.com/cronjob.php?days=1&month=1
Run Code Online (Sandbox Code Playgroud)

这是因为&符号(&)吗?如果是,如何传递多个参数?

使用argv不是一种选择.

cron curl

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

GAS:.cfi_def_cfa_offset的说明

我想解释一下GCC生成的汇编中.cfi_def_cfa_offset指令使用的值.我隐约知道.cfi指令涉及调用帧和堆栈展开,但我想更详细地解释为什么,例如,在编译以下C程序时GCC输出的汇编中使用值16和8的原因在我的64位Ubuntu机器上.

C程序:

#include <stdio.h>

int main(int argc, char** argv)
{
        printf("%d", 0);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在源文件test.c上调用了GCC,如下所示:gcc -S -O3 test.c.我知道-O3可以实现非标准优化,但为了简洁起见,我想限制生成的程序集的大小.

生成的程序集:

        .file   "test.c"
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC0:
        .string "%d"
        .text
        .p2align 4,,15
.globl main
        .type   main, @function
main:
.LFB22:
        .cfi_startproc
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        xorl    %edx, %edx
        movl    $.LC0, %esi
        movl    $1, %edi
        xorl    %eax, %eax
        call    __printf_chk
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
            .cfi_endproc
.LFE22:
        .size   main, .-main
        .ident  "GCC: (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2"
        .section        .note.GNU-stack,"",@progbits …
Run Code Online (Sandbox Code Playgroud)

assembly callstack gnu-assembler dwarf

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