背景:
我有一个很大的模拟工具,我需要了解它的逻辑行为.为了做到这一点,如果我有函数调用的时间顺序,我将得到的大部分帮助,用于最小的工作示例.
我在网上找到了很多工具,比如CygProfiler和etrace.我找到了一个解决方案,我开始遵循使用调试器"步入"的最疯狂的解决方案,我变得非常痛苦.如果您有一个小程序但不是一个完整的模拟工具,这是一个很好的选择.
问题:
我面临的一个问题是上面提到的解决方案最初是用于编译时C生成静态文件(*.o).另一方面,模拟工具生成共享库(.so).我对较低级别的东西知之甚少,所以当我尝试链接它们时,我似乎失败了.
我特意看了一下etrace 文档,它说:
要了解如何修改ptrace.c以使用动态库,请查看example2目录.这里的源代码也创建了一个独立的可执行文件,但PTRACE_REFERENCE_FUNCTION宏的定义与动态库一样.
如果你看看repo,文件example和example2文件夹之间没有区别.只有一个额外的.h文件example2.
另一方面,如果你看src/ptrace.c那里它说:
在动态库上使用ptrace时,必须将PTRACE_REFERENCE_FUNCTION宏设置为库中函数的名称.此功能的加载时,地址将线路输出第一跟踪文件,并且允许其他出入境指针的翻译符号名.您可以将宏PTRACE_INCLUDE设置为该函数可访问此源文件所需的任何#include指令.
稍微低于评论代码:
/* When using ptrace on a dynamic library, the following must be defined:
#include "any files needed for PTRACE_REFERENCE_FUNCTION"
#define PTRACE_REFERENCE_FUNCTION functionName
`*/
Run Code Online (Sandbox Code Playgroud)
题:
本质上问题如下:如何使用etrace动态库?
我需要#include任何文件吗?
要跟踪独立程序,不需要#include任何其他文件.只需将代码链接到ptrace.c,并使用-finstrument-functions选项作为gcc的编译选项.这应该做到这一点.
如何链接通过makefile构建的C++代码 ptrace.c
最后的注意事项:如果有人承担我的无知并为我的问题提供逐步解决方案,我将不胜感激.
更新1:
我设法将与etrace相关的库添加到模拟工具中,并且执行正常.
但是,(可能是因为脚本太旧,或者不适合与C++一起使用)在使用默认情况下提供的perl脚本时出现以下错误:etrace
Run Code Online (Sandbox Code Playgroud)Hexadecimal number > 0xffffffff non-portable"
可能这会改变这个问题的性质,在这一点上更多地转向与perl相关的问题.
如果这个问题得到解决,我希望 …
我想知道是否可以初始化一个std::map带n键:value元素,其中n是预定义的(类似于数组初始化:) array[n].
我不知道这样的构造函数存在,std::map但我想我可以问以防万一.
或者可以做的是:
#include <iostream>
#include <map>
int main()
{
int n = 5;
std::map<int,double> randomMap;
for(int i = 0; i < n; ++i)
{
randomMap.insert({i,0.9});
}
for(auto j: randomMap)
{
std::cout<<"key: " << j.first <<"\tvalue: " << j.second << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要映射值之间的范围lowerBound,并upperBound以一定的价值.
说明性示例:
例如,假设我有GPS系统,用户订阅了它.该系统能够为我提供用户与某一点的距离.根据用户的距离,我想为他们分配一个ID.
从而远离用户
1以100获得ID: 8.4101以200获得ID: 7.2 201以300获得ID: 3.6401以600获得ID: 4.1 等等...
我的方法:
所以我做了什么,我创建了一个std::map初始化如下:
std::map<int, double> distanceToIdMap;
distanceToIdMap =
{
{100, 8.4},
{200, 7.2},
{300, 3.6},
};
Run Code Online (Sandbox Code Playgroud)
然后我使用此代码获取给定距离的ID:
double roundUpToHundred = std::ceil(realDistance / 100.0) * 100;
double powerForDistance = distanceToIdMap.at(roundUpToHundred);
Run Code Online (Sandbox Code Playgroud)
然而,我的方法401对于600距离来说是分解的,因为天花板到距离的最接近的百度400+我得到的值500我在地图中没有条目.当然,平凡的解决办法是添加一个条目500的distanceToIdMap,但是这是我不希望如何处理这个问题.
我想有一个{(lowerbound, upperbound) , …
是否有可能重新命名一个融合了不同美学的传奇?ggplot2
例如:
怎样才能重新命名这样一个组合的传奇呢?当我尝试使用nameforscale_shape_manual或scale_color_manual组合图例时,它会分成两个不同的图例。那不是我想要的。
可能的解决方案:我在这里找到的解决方案: https: //stackoverflow.com/a/14622513/4317408对我有用......
基本上有两种可能的方法,在这两种方法中,为了使组合图例获得新名称,name组合的两个不同图例的必须修改为相同的:
scale_color_manual(values = c(brewer.pal(5, "Set1") ) , name = "Combined Legend Title") +
scale_shape_manual(values = c(1,2,3,4,5) , name = "Combined Legend Title")
Run Code Online (Sandbox Code Playgroud)
或者
guides(shape=guide_legend(title="Combined Legend Title"), color=guide_legend(title="Combined Legend Title"))
Run Code Online (Sandbox Code Playgroud)
我仍然想知道是否有更简单的方法可以做到这一点?
我用以下命令绘制了一个图:
ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo) )) +
stat_summary(fun.y=mean, geom="line", alpha=0.85 ) +
stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2 ) +
#stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5) +
theme_bw(base_size = 15, base_family = "Palatino") +
theme(legend.key = element_blank())
Run Code Online (Sandbox Code Playgroud)
我得到了这个传说:

但是,当我取消注释命令的第3行时:
ggplot(data=test_mod, aes(x=realDist , y=1-value, color=as.factor(foo) , size=as.factor(foo) )) +
stat_summary(fun.y=mean, geom="line", alpha=0.85 ) +
stat_summary(fun.y=mean, geom="point", pch=21, fill="white", size=2 ) +
stat_summary(fun.data=mean_cl_normal, geom="errorbar", width=8, size = 0.5) +
theme_bw(base_size = 15, base_family = "Palatino") +
theme(legend.key = element_blank())
Run Code Online (Sandbox Code Playgroud)
我得到一个略有不同的传说: …
R以下sqldf查询的简单等效命令是什么"
test <- sqldf("SELECT *, SUM(value) FROM dataFrame GROUP BY run")
Run Code Online (Sandbox Code Playgroud)
我试着像:
test <-aggregate(dataFrame$value, by=list(dataFrame$run), FUN=sum, na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)
但不知何故,这SUM发生在每一列dataFrame
我有以下情节:

通过执行获得:
ggplot() +
stat_summary( data = test_data1, aes(x=x, y=(1-value) , colour = as.factor(1) , lty = as.factor(1) ) , fun.y=mean, geom="line" , size=1 ) +
stat_summary( data = test_data1, aes(x=x, y=(1-value) , colour = as.factor(1), shape=as.factor(1) ) , fun.y=mean, geom="point" , size=3, pch=21, fill="white" ) +
stat_summary( data = test_data2, aes(x=x, y=(1-value) , colour = as.factor(2), lty = as.factor(2) ) , fun.y=mean, geom="line", size=1 ) +
stat_summary( data = test_data2, aes(x=x, y=(1-value) , colour = as.factor(2), shape=as.factor(2)) , fun.y=mean, …Run Code Online (Sandbox Code Playgroud) 我有以下数据:
structure(list(osc = c(14944966.1544549, 21761557.221199, 22468349.3727696,
25347942.08608, 23753968.4211987, 21988336.4211988, 24782010.0211988,
23466022.821199, 24862768.4211988, 24753030.8211989, 6290574.27199998,
6347336.50713587, 6133022.93504007, 6096474.45708794, 6310948.70553584,
6730668.06553585, 7041845.44716779, 6834310.72460792, 7099525.34016,
7427605.81836809, 6489665.40799994, 3923620.15923189, 5597911.8079998,
5246583.80800014, 5770297.40799987, 5486879.80800004, 6084583.80800003,
6719183.80800007, 6575468.60799991, 10992555.0079998), phone = c(14012229.0213694,
21428112.3570197, 21387319.7062893, 23452910.4634375, 23561326.6405997,
21295405.7333708, 24791075.2993385, 23077156.3984319, 24595401.2681341,
24576961.6364291, 6436497.31657422, 6273285.60788477, 5998908.36035547,
5837113.11736719, 6138679.45996679, 6229959.76306446, 6790623.7462578,
6752280.48147853, 6625959.55551369, 6979249.86094727, 6642155.1844375,
3965572.43175781, 5462667.62250977, 5232575.67903125, 5466322.91543554,
5380533.88633204, 5814654.14943164, 6482157.46073438, 6269535.74795312,
10938578.8058379), type = c("local", "local", "local", "local",
"local", "local", "local", "local", "local", "local", "up", "up",
"up", …Run Code Online (Sandbox Code Playgroud) 什么是内部结构mean_cl_normal function并且可以安全地用于置信区间计算?它是如何工作的?