我在Perl编程(V 5.20.2在Debian 8)真正的初学者,我期待实现"调试"与Perl的执行时间上的开销时,我并不需要调试的方法.
在C中,我们可以使用assert和-Dgcc选项(通常,您可以通过使用与您自己的定义constante相同的方式来执行自己的断言MY_DEBUG).
好吧,首先想法只是设置一个全局变量debug并再次测试它,但是当我不想处于调试模式时它会产生一堆无用的测试.
有像断言或Carp :: Assert这样的CPAN模块,但似乎即使我不想调试也会有if测试.
是否有一种Perl方式可以根据"某些东西"停用代码部分?
额外的问题:我想制作一个具有相同功能的Perl模块,所以如果有办法说"启用/禁用调试",那么use MyModule,我将是一个快乐的Perl开发人员.
最近,我学会了" 回溯 "功能的存在.此函数允许在某些情况下检索在没有调试信息的情况下编译的ELF运行程序的callstack.
它对我来说是完美的(我不能在生产程序中插入调试符号),但是对于"回溯"工作,有(大致)两个条件:
我担心的是,如果我满足这两个条件,我的程序将会变慢(因为编译器无法优化非静态函数,因为他优化了静态函数?).据我所知,使用-rdynamic添加额外信息不会影响程序的性能:它只是给ELF二进制文件增加了一点重量.
所以这是我的问题:
当所有静态函数变为非静态函数时,运行性能的影响是什么?
鉴于此结构:
typedef struct test {
char field1[20];
char *field2;
} test_s
Run Code Online (Sandbox Code Playgroud)
如何使用指定的初始化程序初始化这种结构,知道我希望field2指向field1?
test_s test = {.field1[0] = '\0', .field2 = .field1};
Run Code Online (Sandbox Code Playgroud)
不起作用.
我很难尝试做一些我认为非常简单的事情(我一定不是第一个想做的人)。我在 Windows 7 上使用 Visual Studio 2017 来做一些 C 代码,我需要为 zip 充气/放气。
我搜索了一下,我找到了zlib。这似乎正是我搜索的内容:免费、酷版权、无专利,并在其他项目中广泛使用和测试。
所以,我开始下载最新版本(1.2.11 的 zip),然后我开始尝试“简单地”获取 DLL。
但是,文档指出为了编译“zlib1.dll”,我必须使用“./contrib/vstudio/vc..”,“..”是正确的 Visual Studio。但是我有 Visual Studio 2017,只有“vc9”到“vc14”,“vc14”是 Visual Studio 2015。
文档说我必须使用 Microsoft Visual C++ 2015,事实上,当我用 vs2017 强制打开时,我有完整性错误。
所以我尝试安装 MVC++ 2015,但它说我无法安装它,因为我已经安装了一些东西(VS2017)。
这么基本的东西真的没有办法实现,还是有我不知道的知识?