给定一个C程序,我必须确定访问全局变量的函数是读取它们还是编写它们.
示例代码:
#include <stdio.h>
/* global variable declaration */
int g = 20;
int main()
{
/* writing the global variable */
g = 10;
/* reading the global variable */
printf ("value of g = %d\n", g);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
执行上面的代码我想生成以下格式的日志文件:
1- Global variable a written in function main() "TIME_STAMP"
2- Global variable a read in function main() "TIME_STAMP"
Run Code Online (Sandbox Code Playgroud)
我可以通过按照以下逻辑对源代码进行静态分析来实现这一点:
这不是一个正确的实现.
一些研究:
我已经了解了调试器如何捕获信息.
互联网中的一些链接: 如何使用写入地址捕获内存写入和调用函数
当我构造一个新的时,BufferedReader它为我提供了8192个字符的缓冲区。这背后的逻辑/原因是什么?
8192 = 2 to the power of 13
Run Code Online (Sandbox Code Playgroud) 我从http://releases.llvm.org/download.html下载了LLVM源代码库.
现在,当我在源目录中运行CMAKE时,它正在生成32位Visual Studio项目,但我想生成64位可视工作室项目.如果有人已经尝试过请帮助.
我已经浏览了文档https://llvm.org/docs/GettingStartedVS.html,当然提到的-Thost=x64选项不起作用.
我在 maven 项目中使用mockito-core-2.7.21,它按预期工作。
但是为了能够模拟最终类,我在mockito-extensions\org.mockito.plugins.MockMaker源文件夹下创建了一个文件并添加了文本mock-maker-inline.
根据https://www.baeldung.com/mockito-final以及使用 Mockito 2模拟最终课程,它应该允许我模拟最终课程但是当我运行我的 junit 测试时,我收到以下错误:
Java 版本:1.8
操作系统:Windows 10
Junit:4 和 5(我都试过)
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker
at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:66)
at com.sun.proxy.$Proxy7.isTypeMockable(Unknown Source)
at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:186)
at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:180)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
at org.mockito.Mockito.mock(Mockito.java:1729)
at org.mockito.Mockito.mock(Mockito.java:1642)
at siemens.esd.grpc.services.UTCreateModuleServiceTest.testCreateBlockInterface(UTCreateModuleServiceTest.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) …Run Code Online (Sandbox Code Playgroud) Stack不是Vector那么为什么Stack类的扩展(有关系)在JDK Vector类,堆栈想将工作与push()和pop()操作,但因为它扩展矢量我能够做的add()和remove()操作在堆栈。
我认为应该扩展Vector类,而Stack类应该使用Vector类作为组合。