我需要检测我的应用程序是否在虚拟化OS实例中运行.
我发现了一篇文章,其中包含有关该主题的一些有用信息.同一篇文章出现在多个地方,我不确定原始来源.VMware实现了一个特定的无效x86指令来返回有关自身的信息,而VirtualPC使用幻数和带有IN指令的I/O端口.
这是可行的,但在两种情况下似乎都是无证件行为.我想VMWare或VirtualPC的未来版本可能会改变机制.有没有更好的办法?这两种产品都有支持的机制吗?
同样,有没有办法检测Xen或VirtualBox?
我并不担心平台故意试图隐藏自己的情况.例如,蜜罐使用虚拟化,但有时会掩盖恶意软件用来检测它的机制.我并不在乎我的应用程序会认为它在这些蜜罐中没有虚拟化,我只是在寻找"尽力而为"的解决方案.
该应用程序主要是Java,但我希望在这个特定的功能中使用本机代码和JNI.Windows XP/Vista支持是最重要的,尽管参考文章中描述的机制是x86的通用功能,并且不依赖于任何特定的OS工具.
在Java应用程序中,我希望能够在操作开始时获取时间戳,并能够定期检查操作运行的时间.问题是:我不希望受到网络时间协议的影响,或者管理员改变时间,或任何可能突然调整时间的东西.我想要一个单调增加的时间价值.我相信这会排除java.util.Date,Time和Calendar.
JRE中是否存在单调增加时间戳的某些来源?
我需要显示从深度嵌入式CPU中提取的分析信息,以我团队中的其他开发人员能够采取行动的方式呈现它.分析数据是每个函数进入和退出时循环计数器的快照,因此我们有一个以亚微秒定时精度注释的调用图.我不想像gprof一样转储函数名称和时序,我正在寻找更容易理解和行动的东西.
有没有人使用特别好的分析工具(在任何平台上),这使得很容易识别要钻进的代码区域?我正在寻找一个鼓舞人心的例子来关注如何显示调用图,但如果有一个输入格式的好工具,我可以按摩我的数据,我将使用它.我可以使用Windows,Linux或MacOS X来运行可视化工具.
IBM DeveloperWorks上的一篇分析文章引导我使用GraphViz,并在其网站上提供了一个分析示例.除非另有建议,我将使用GraphViz并模仿他们的分析示例.
我正在研究一个实用程序,它需要将十六进制地址解析为二进制内的符号函数名和源代码行号.该实用程序将在x86上的Linux上运行,但它分析的二进制文件将用于基于MIPS的嵌入式系统.MIPS二进制文件采用ELF格式,使用DWARF作为符号调试信息.
我目前正计划派生objdump,传入十六进制地址列表并解析输出以获取函数名称和源行号.我已经编译了一个支持MIPS二进制文件的objdump,它正在工作.
我更喜欢有一个软件包,允许我从Python代码本地查找内容而不需要另外的进程.我在python.org上找不到libdwarf,libelf或libbfd,也没有提到dwarfstd.org上的python.
某处有合适的模块吗?
我继承了一个Java applet(一个实际的<APPLET>),它在运行大约4天后抛出一个OutOfMemory异常.applet的本质是人们真的会长时间保持开放状态.
运行近两天后,jmap -histo将顶级堆消费者显示为:
num #instances #bytes class name --- ---------- ------ ---------- 1: 14277 7321880 <constantPoolKlass> 2: 59626 5699968 <constMethodKlass> 3: 14047 5479424 <constantPoolCacheKlass> 4: 14277 5229744 <instanceKlassKlass> 5: 59626 4778944 <methodKlass> 6: 71026 3147624 <symbolKlass>
麻烦的是,我不明白这些东西是什么.至少有两件事情发生了:constantPoolKlass + constantPoolCacheKlass + instanceKlassKlass看起来是相关的,constMethodKlass + methodKlass也是如此.从名称来看,它们似乎与类加载器相关.
如果我不得不猜测我会说applet创建了大约14,277个对象,其中每个对象有大约4种方法,总共大约59626个方法.然而,jmap输出并没有显示任何具有如此大量实例的类,也没有看起来像其他类对象的总和加起来为14277.所以也许我对这些对象的作用不正确.谁能解释一下?
我通常不会在Windows开发上工作,并且完全不熟悉工具链和构建系统.我的嵌入式产品包括来自其文件系统中第三方的一些Windows DLL(由安装文件系统的Windows机器使用).
我有一个问题:与以前的版本相比,这些DLL的最新版本大小增加了三倍,并且它们不再适合文件系统.DLL的功能没有太多变化,所以我怀疑开发人员只是忘了在这个drop中删除调试符号.我会问他们,但由于时区和语言差异,得到答案通常需要几天时间.
有人可以解释一下,对于不熟悉VisualC的人使用简单的步骤,如何确定DLL是否仍然包含调试信息以及如何将其删除?
我正在使用一个需要我生成16位CRC的设备.
该设备的数据表显示它需要以下CRC定义:
CRC Type Length Polynomial Direction Preset Residue CRC-CCITT 16 bits x16 + x12 + x5 + 1 Forward FFFF (16) 1D0F (16)
其中预置= FFFF(16位)和残留= 1D0F(16位)
我搜索了一个CRC算法并找到了这个链接:http: //www.lammertbies.nl/comm/info/crc-calculation.html
它有两个.CRC-CCITT(0xFFFF)CRC-CCITT(0x1D0F)
预设和残留物有什么区别?
我想在X ++ for Microsoft Axapta 3.0(Dynamics AX)中创建批处理作业.
如何创建一个执行像这样的X ++函数的作业?
static void ExternalDataRead(Args _args)
{
...
}
Run Code Online (Sandbox Code Playgroud) 我正在用C编写Linux程序来分析嵌入式系统生成的核心文件.核心文件可能是小端(ARM)或大端(MIPS),分析它们的程序可能在小端主机(x86)或大端(PowerPC)上运行.
通过查看标题,我知道核心是LE还是BE.我宁愿我的程序并不需要知道它运行在主机是否很少或大端,我想使用一个API来处理对我来说.如果没有更好的选择,我想我会开始依赖#ifdef __BIG_ENDIAN__.
在Linux内核中,我们有cpu_to_le32等从原生字节排序转换为小端等.在用户空间中有htonl等,它从原生端转换为大端,但是我找不到本机到小端的等价物.
任何人都可以为用户空间建议合适的API吗?
编辑:为了清楚,我正在寻找一个已经知道我的CPU是大端还是小端的API,并相应地交换.我不想为#ifdefs乱丢我的代码.我不只是在寻找代码片段来交换字节; 谢谢你们,但那不是重点.
我有一个内部网络应用程序,页面顶部有一个图像,目前包含一些带阴影的英文文本.我现在需要为各种语言提供此页面的本地化版本.我的主要选择是:
还有其他选择吗?这是一个教育环境,我无法控制学生使用的浏览器.
我确实尝试从图形中删除阴影,并将文本移动到HTML中的标题中,但两者都没有吸引力.人们说它看起来像当前页面的廉价仿制品,这让我感到骄傲.
对于嵌入式系统,我需要将一些数据结构放置在固定地址,以便单独的控制 CPU 可以在已知位置访问它们。我使用嵌入式目标的链接器脚本来完成此操作,并为控制 CPU 加上这些相同地址的#defines。
令我困扰的是,这些地址常量是在两个地方定义的:链接器脚本和头文件。我只想拥有一个。到目前为止,我想出的最佳解决方案是让 Makefile 在链接器脚本上运行 cpp,允许它 #include 相同的标头。
有更好的方法来实现这一点吗?是否有一些鲜为人知的 ld 选项或链接描述文件的命名约定,可以通过 cpp 自动运行它?
java ×2
linux ×2
axapta ×1
c ×1
crc ×1
css ×1
dll ×1
dwarf ×1
elf ×1
endianness ×1
linker ×1
localization ×1
memory ×1
mips ×1
performance ×1
preset ×1
python ×1
time ×1
virtual-pc ×1
virtualbox ×1
vmware ×1
windows ×1
x++ ×1
x86 ×1
xen ×1