我正在为不同的项目使用mercurial和git,并且喜欢它们.我觉得有点恼火的是,"hg status"显示了相对于存储库根目录的路径,而不是当前目录(与git不同).可以通过某种方式调整此行为吗?
伙计们,在我的应用程序中,我正在使用clock_gettime(CLOCK_MONOTONIC)它来测量帧之间的增量时间(gamedev中的典型方法),并且我不时会遇到奇怪的行为clock_gettime(..)- 返回的值偶尔也不是单调的(即上一次.是更大的比目前的时间).
目前,如果发生这样的悖论,我只需跳过当前帧并开始处理下一帧.
问题是这怎么可能呢?这是Linux POSIX实现中的一个错误clock_gettime吗?我使用的是Ubuntu Server Edition 10.04(内核2.6.32-24,x86_64),gcc-4.4.3.
Kcachegrind摇滚,这是我最喜欢的工具,但是我不时会错过在远程服务器上运行终端(例如使用ssh)的能力.
我知道可以设置VNC或X服务器转发,但是在我需要简单的东西时它非常笨拙.
是否有任何kcachegrind控制台替代(例如基于ncurses)?
是否有"tee"的替代方法,它捕获正在执行的命令的STDOUT/STDERR,并以与处理的命令相同的退出状态退出.如下:
eet -a some.log -- mycommand --foo --bar
Run Code Online (Sandbox Code Playgroud)
其中"eet"是"tee":)的假想替代品(-a表示追加, - 分隔捕获的命令)不应该很难破解这样的命令但是它可能已经存在并且我不知道它?
谢谢.
大家好吗,请你推荐一个工具,用于在使用c ++构建并在linux x86_64下工作的生产多线程服务器上发现内存损坏?我目前面临以下问题:每隔几个小时我的服务器崩溃并出现段错误,核心转储显示错误发生在malloc/calloc中,这绝对是内存在某处被破坏的标志.
实际上我已经尝试了一些没有太多运气的工具.这是我迄今为止的经历:
Valgrind是一个伟大的(我甚至说是最好的)工具,但它使服务器的速度变慢,使其无法在生产中使用.我在舞台服务器上尝试了它,它确实帮助我找到了一些与内存相关的问题但是即使在修复它们之后我仍然会在生产服务器上崩溃.我在Valgrind下运行了我的舞台服务器几个小时,但仍然无法发现任何严重的错误.
据说ElectricFence是一个真正的记忆猪,但我甚至无法让它正常工作.它几乎立即在舞台服务器上的随机奇怪的地方进行了段落,其中Valgrind根本没有显示任何问题.也许ElectricFence不支持线程化?我不知道.
杜马 - 和ElectricFence一样,但更糟糕的是.虽然EF产生了具有可读回溯的核心转储,但DUMA只显示"?????"(并且肯定服务器使用-g标志构建)
dmalloc - 我将服务器配置为使用它而不是标准的malloc例程,但它会在几分钟后挂起.将gdb附加到进程显示它挂在dmalloc中的某处:(
我渐渐变得疯狂,根本不知道接下来该做什么.我有以下工具要尝试:mtrace,mpatrol但也许有人有更好的主意?
我非常感谢你对这个问题的任何帮助.
更新:我设法找到了错误的来源.但是我发现它在舞台服务器上没有生成一个使用helgrind/DRD/tsan - 几个线程之间有一个datarace导致内存损坏.关键是使用适当的valgrind抑制,因为这些工具显示太多的误报.我仍然不知道如何在没有任何显着减速的情况下在生产服务器上发现这一点......
Mercurial支持将存储库推送式克隆到远程主机,但是新克隆的存储库不包含工作副本.是否有任何"隐藏"选项可以在这些克隆的回购中进行mercurial调用更新?
这是一个例子:
1)hg init hello
2)hg clone hello ssh:// somehost/hello
ssh:// somehost/hello只包含.hg目录,我必须在shell中执行以下命令才能填充工作副本:
3)ssh somehost'cd hello && hg update'
有没有办法避免步骤3)?
你能给我一个编写自定义gcc预处理器的例子吗?
我的目标是用适当的CRC32计算值替换SID("foo")相似的宏.对于任何其他宏,我想使用标准的cpp预处理器.
看起来使用-no-integrated-cpp -B选项可以实现这个目标,但是我找不到任何简单的用法示例.
伙计们,我找不到适用于Linux的syslog()的重入版本...有吗?如果不是,你呢?显而易见的答案是将日志记录工具移动到单独的线程并序列化对syslog的访问...
伙计我在以下场景中从共享git仓库中拉出时遇到重复的代码冲突:
有一个共同的svn存储库
有几个开发人员使用git-svn桥跟踪/同步这个常见的svn repo和他们自己的本地git repos(通过git svn rebase/dcommit)
这些使用git的开发人员有时需要在不影响svn存储库的情况下共享其更改.为此,他们设置了一个共享的git repo并使用pull/push命令交换他们的工作
事实证明,由于使用"git svn rebase"与主svn repo同步,这些开发人员可能会遇到冲突问题.发生这种情况是因为rebase操作会重写本地git分支的历史记录,并且无法进入共享git仓库并从中拉出它通常会导致冲突.
有人有同样的问题吗?
有没有g ++选项可以用NULL const char*检测std :: string的不正确初始化?
我正在将一些int字段转换为std :: string,即:
struct Foo
{
int id;
Foo() : id(0) {}
};
Run Code Online (Sandbox Code Playgroud)
...转换成:
struct Foo
{
std::string id;
Foo() : id(0) {} //oooops!
};
Run Code Online (Sandbox Code Playgroud)
我完全忽略了使用0和g ++初始化错误的'id'初始化时没有给我任何警告.在运行时检测到此错误(std :: string构造函数抛出异常),但我真的想在编译时检测到这些东西.有什么办法吗?