assert

Is it legal to use side-effects in exceptions thrown by constexpr?

邮差的信 提交于 2019-12-01 03:06:49
Normally, constexpr must be free of side-effects. However, I just discovered that it is possible to use side-effects in the constructors of thrown exceptions. That technique can be used to emulate assert() for constexpr functions, as it is demonstrated in the following program. #include <iostream> #include <cstdlib> #include <stdexcept> struct constexpr_precond_violated : std::logic_error { constexpr_precond_violated(const char* msg) : std::logic_error(msg) { std::cerr << msg << '\n'; abort(); // to get a core dump } }; #define TO_STRING_IMPL(x) #x #define TO_STRING(x) TO_STRING_IMPL(x)

How to enable assert in CMake Release mode?

青春壹個敷衍的年華 提交于 2019-12-01 02:53:47
CMake is being used to compile some C++ files. There are assert calls in the code. These calls are disabled in Release mode of CMake. It defines NDEBUG in Release mode, I guess. If I'm interested in having assert in Release mode of CMake, how do I enable it? 1 If you interested in assert functionality only in your own code then the simple one solution is to provide custom assert. For instance: #if (MY_DEBUG) # define MY_ASSERT(A) ... checks here ... #else # define MY_ASSERT(A) ... ignore A ... #endif Use option to enable/disable assert: # CMakeLists.txt option(ENABLE_MY_ASSERT "Turn on MY

Optimization, asserts and release mode

和自甴很熟 提交于 2019-12-01 02:25:51
问题 Consider a function void f() { assert(condition); ... } In debug mode, where asserts are enabled, the compiler is free to assume condition holds, since the remaining code will not be executed if it does not. However, in release mode, I believe the compiler will only see void f() { ... } and can no longer assume condition . Are there any compiler directives or static assert tricks to let compiler know about certain invariants? 回答1: This can't be done in portable C or C++. Some compilers

assert(false) vs RuntimeException?

旧巷老猫 提交于 2019-12-01 01:41:15
问题 I'm reading the source of XWalkUIClientInternal and I ran into the following code: switch(type) { case JAVASCRIPT_ALERT: return onJsAlert(view, url, message, result); case JAVASCRIPT_CONFIRM: return onJsConfirm(view, url, message, result); case JAVASCRIPT_PROMPT: return onJsPrompt(view, url, message, defaultValue, result); case JAVASCRIPT_BEFOREUNLOAD: // Reuse onJsConfirm to show the dialog. return onJsConfirm(view, url, message, result); default: break; } assert(false); return false; I've

JUnit学习笔记

女生的网名这么多〃 提交于 2019-11-30 22:29:56
JUnit学习笔记 JUnit框架 JUnit是一个测试框架,它使用注释来标识指定测试的方法。JUnit是Github上托管的一个开源项目。 如何在JUnit中定义测试? JUnit 测试是类中包含的方法,仅用于测试。这称为测试类。 要定义某种方法为测试方法,请使用注释对其进行 @Test 注释。此方法执行被测代码。 您可以使用JUnit或另一个assert框架提供的assert方法来检查预期结果与实际结果。这些方法调用通常称为断言或断言语句。 JUnit测试示例 以下代码显示了使用 JUnit 5 版本的 JUnit 测试。该测试假定 MyClass 该类存在并具有一个 multiply(int, int) 方法。 import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; public class MyTests { @Test public void multiplicationOfZeroIntegersShouldReturnZero() { MyClass tester = new MyClass(); // MyClass is tested // assert statements assertEquals(0, tester

【转载】红蓝对抗——加密Webshell“冰蝎”攻防

落爺英雄遲暮 提交于 2019-11-30 21:25:21
演练中,第一代webshell管理工具“菜刀”的攻击流量特征明显,容易被安全设备检测到,攻击方越来越少使用,加密webshell正变得越来越流行,由于流量加密,传统的WAF、WebIDS设备难以检测,给威胁监控带来较大挑战。这其中最出名就是“冰蝎”,“冰蝎”是一款动态二进制加密网站管理客户端,演练中给防守方造成很大困扰,本文将对“冰蝎”的加密原理、流量特征、检测方案进行探讨。 0x01 “冰蝎”介绍&加密原理 “冰蝎”项目地址:https://github.com/rebeyond/Behinder “ 冰蝎”目前最新版本为v2.1,兼容性已经日益完善,加密不再依赖PHP openssl扩展功能,同时支持了简单的ASP。 主体功能方面包括虚拟终端、socks代理、文件管理、反弹shell、数据库管理等等,功能强大。 加密原理方面,以PHP环境为例, 《利用动态二进制加密实现新型一句话木马之PHP篇》 [1] 这篇文章对“冰蝎“的原理已经做了详细的分析,简要介绍一下加密流程: 首先客户端以Get形式发起带密码的握手请求,服务端产生随机密钥并写入Session。 客户端将源代码,如assert|eval("phpinfo();”)利用AES加密,发送至服务端,服务端收到之后先进行AES解密,得到中间结果字符串assert|eval("phpinfo();")。

OpenCV Mat&Operations

人走茶凉 提交于 2019-11-30 21:19:23
/*M/////////////////////////////////////////////////////////////////////////////////////// // // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. // // By downloading, copying, installing or using the software you agree to this license. // If you do not agree to this license, do not download, install, // copy or use the software. // // // License Agreement // For Open Source Computer Vision Library // // Copyright (C) 2000-2008, Intel Corporation, all rights reserved. // Copyright (C) 2009, Willow Garage Inc., all rights reserved. // Third party copyrights are property of

Python单元测试

我是研究僧i 提交于 2019-11-30 16:04:22
是单元测试 程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。 单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。通常情况下,单元测试主要面向一些功能单一的模块进行。 举个例子:一部手机有许多零部件组成,在正式组装一部手机前,手机内部的各个零部件,CPU、内存、电池、摄像头等,都要进行测试,这就是单元测试。 在Web开发过程中,单元测试实际上就是一些“断言”(assert)代码。 断言就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。 python中assert断言是声明布尔值为真的判定,如果表达式为假会发生异常。单元测试中,一般使用assert来断言结果。 常见的断言方法 assertEqual 如果两个值相等,则pass assertNotEqual 如果两个值不相等,则pass assertTrue 判断bool值为True,则pass assertFalse 判断bool值为False,则pass assertIsNone 不存在,则pass assertIsNotNone 存在,则pass 如何测试 首先,定义一个类,继承自unittest

report for PA1

纵然是瞬间 提交于 2019-11-30 15:52:46
说明: % report for PA1 1.ISA=x86 2.关于x86 register 存在的问题,修改前reg.h文件寄存器设置中32,16,8位寄存器空间采用struct分配, 不共用空间,按照x86要求,改为使用Anonymous Union分配,然而发现修改后发现仍然报assertion fail, 检查reg.c 中test的code后,发现assert函数通过检验之后在同一个struct中声明的一系列rtlreg(eax,ecx,etc.)是否与对应寄存器位置相同, 所以要求这一系列rtlreg与gpr之间也采用Anonymous Union分配。 %% PA1.1 fun1.si ​ 利用sscanf(source_str,format,&des)按格式读入参数,注意des参数要用地址表示; ​ 之后根据参数调用相应函数(cpu_exec)即可 ​ 完成之后添加了判断N==0,提示无效(阅读代码框架可知N=-1表示最大uint,有效) fun2.info r ​ 在相应的isa中写好isa相关的isa_reg_display,后调用即可,写的时候利用阅读代码可知直接利用相应的写好的宏定义等(reg_name.reg_b,reg_l,reg_w)即可快速实现 ​ 好看起见,查阅了printf函数中打印16进制相关参数, “%#x” //表示按格式输出, “%nx

C语言标准库等

大城市里の小女人 提交于 2019-11-30 15:46:02
1、C语言的基本内容暂时就先不看了, 可以参考这里的基本内容: C语言的内容参考链接 C语言学习资源 2、系统函数 &&&& 系统库里面的内容; usr/include 开发环境下提供对应的系统库[开发对应系统上面的应用都是有这个系统库的] &&& 有时间也要熟悉一下系统常用的函数内容 了解:ANSI C ANSI C是由美国国家标准协会(ANSI)及国际标准化组织(ISO)推出的关于C语言的标准。ANSI C 主要标准化了现存的实践, 同时增加了一些来自 C++ 的内容 (主要是函数原型) 并支持多国字符集 (包括备受争议的三字符序列)。 ANSI C 标准同时规定了 C 运行期库例程的标准。 &&& 3、下面会对C语言中系统的一些标准库的了解: 1)<assert.h> C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。 123 void assert(int expression);expression: 一个变量或任何C表达式;true, assert不执行任何动作。否则,assert()会在标准错误stderr上显示错误消息,并且终止程序。[可以查看一下里面的几个内部的使用方法,上面的这个方法最常用] 2)<ctype.h> /<_ctype.h>文件 1>提供一些函数用于测试和映射字符。 2