log_error_verbosity参数详解

本文详细介绍了PostgreSQL的log_error_verbosity参数,该参数用于控制日志信息的详细程度。在terse模式下,日志仅包含基本信息;default模式提供更详细的上下文;verbose模式则展示所有可用信息。通过示例展示了不同模式下执行相同操作的日志输出差异,帮助理解参数设置对日志记录的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数说明

控制每条日志信息的详细程度。

默认: log_error_verbosity = default , terse、default、verbose三选一

terse模式下,返回的消息只包括严重性、主要文本以及位置;这些东西通常放在一个单一行中。 

default模式生成的消息包括上面的信息加上任何细节、提示或者上下文域(这些可能跨越多行)。 

verbose模式包括所有可以可用的域。修改细节模式不会影响来自已有PGresult对象中的可用消息。 只有随后创建的PGresult对象才受到影响。 

参数测试

log_error_verbosity = default

参数设置

alter database postgres SET log_error_verbosity = 'default';

查看参数

postgres=# show log_error_verbosity;

log_error_verbosity

default

(1 row)

执行sql,查看pg日志如下:

2024-02-18 14:30:29 HKT [3490]: [3] user=postgres,db=postgres,app=PostgreSQL JDBC Driver,client=172.23.51.3 INFO: cuout:{"DSG_OP":"J","DSG_TABLE":"BUSINESS_HALL_QUEUE","DSG_OP_SCN":"1708237829219","DSG_SEQ_ID":"1","CP_SYSTEM":"cms","DSG_INSTANCE":"CMS","DSG_OWNER":"CP","DSG_OBJNNO":"","DSG_TRANS_ID":"0","DSG_OP_TIME":"2024-02-18 14:30:29","DSG_LOADERTIME":"2024-02-18 14:30:29","DSG_ORA_ROWID":"","S_DSG_SYSTEM":"cmsi","S_CP_CUNAME":"BusinessHallQueue","S_CP_CUKEY":["C307-3","1031"],"S_CP_CUID":-649165967,"S_DSG_INSTANCE":"BEIJING","S_DSG_OWNER":"BEIJING","S_DSG_TABLE":"BUSINESS_HALL_QUEUE","S_DSG_OP_SCN":"0","S_DSG_SEQ_ID":"0","S_DSG_OP_TIME":"2023-07-25 10:58:12","S_DSG_LOADERTIME":"","S_DSG_OP":"i","O_DSG_OP_TIME":"2023-07-25 10:58:12","O_DSG_LOADERTIME":"","CU_IN_TIME":"2024-02-18 14:30:29.205","CU_OUT_TIME":"2024-02-18 14:30:29.219","DSG_COLUMN":{"TICKET_NUMBER":"1031","PRODUCT_NO":"15010597437","USER_TYPE":"5","USER_STATE":"2","CHANNEL_ID":"C307-3","HANDLING_CODE":"02","HANDLING_NUMBER":"HW5101","WAITING_TIME":"2767","HANDLING_TIME":"","TAKE_TIME":"2023-07-23 10:33:05","CALL_TIME":"2023-07-23 11:19:12","END_TIME":"","DEAL_TIME":"2023-07-23 11:19:12","OTHER_INFO":"","FACT_TAB_NUM":3,"DEPT_COUNTY_ID":"","DEPT_COUNTY_NAME":"","REGIONAL_CENTER_ID":"","REGIONAL_CENTER_NAME":"","CHL_SHORT_NAME":"","DAY":"2023-07-23 00:00:00"},"PK":{"CHANNEL_ID":"C307-3","TICKET_NUMBER":"1031","DAY":"2023-07-23 00:00:00"},"CFG_VERSION":"20231029023549"}

2024-02-18 14:30:29 HKT [3490]: [4] user=postgres,db=postgres,app=PostgreSQL JDBC Driver,client=172.23.51.3 CONTEXT: SQL statement "SELECT cu.cu_send_record(recordStr, recordD2UStr, _pk, jsonBody::text)"

PL/pgSQL function cu.send_record(record,text,text,text,boolean,text) line 19 at PERFORM

SQL statement "SELECT cu.send_record(upi, 'BUSINESS_HALL_QUEUE', 'channel_id,ticket_number,day', _operation)"

PL/pgSQL function cu.cmsi_10001(jsonb,jsonb,text,text,text,text,text) line 44 at PERFORM

SQL statement "select cu.cmsi_10001($1,$2,$3,$4,$5,$6,$7);"

SQL statement "EXECUTE p_2f274ec0caf2387339a120fdc0f04834($ZYX$cmsi$ZYX$,$ZYX$BusinessHallQueue$ZYX$,$ZYX$["C307-3","1031"]$ZYX$,$ZYX$-649165967$ZYX$,$ZYX${"DSG_ORA_ROWID":"0","DSG_TRANS_ID":"0","DSG_TABLE":"BUSINESS_HALL_QUEUE","CP_SYSTEM":"cmsi","DSG_SEQ_ID":"0","DSG_INSTANCE":"BEIJING","DSG_OWNER":"BEIJING","DSG_OP_TIME":"2023-07-25 10:58:12","CP_CUNAME":"BusinessHallQueue","DSG_OP":"i","DSG_OBJNNO":"1001","DSG_LOADERTIME":"","DSG_COLUMN":{"HANDLING_NUMBER":"HW5101","CHANNEL_ID":"C307-3","WAITING_TIME":"2767","DEAL_TIME":"2023-07-23 11:19:12","TICKET_NUMBER":"1031","USER_STATE":"2","CALL_TIME":"2023-07-23 11:19:12","TAKE_TIME":"2023-07-23 10:33:05","HANDLING_CODE":"02","END_TIME":"","PRODUCT_NO":"15010597437","USER_TYPE":"5","OTHER_INFO":"","HANDLING_TIME":""},"PK":{"CHANNEL_ID":"C307-3","TICKET_NUMBER":"1031"},"DSG_OP_SCN":"0"}$ZYX$,$ZYX$2024-02-18 14:30:29.189

<think>好的,我现在需要帮助用户了解如何使用xrun命令运行UVM仿真,并且他们希望得到基于官方文档的详细解释。首先,我得回忆一下xrun的基本用法以及UVM相关的配置。 根据用户提供的引用内容,特别是引用[2]和[3],用户可能已经有一些基础的仿真环境设置,但需要更深入的指导。引用[2]中的makefile示例显示xrun用于编译、仿真和清理,但可能没有涉及UVM的部分。引用[3]提到UVM的objection机制,这说明用户可能在构建验证环境时需要注意这些机制。 首先,我需要确定xrun支持UVM的具体参数。通常,使用xrun进行UVM仿真需要指定UVM的版本,比如-uvm或-uvmhome参数。例如,xrun -uvm或xrun -uvmhome <path_to_uvm_library>。此外,可能需要包含UVM源代码或预编译的库。 接下来,用户可能需要知道如何编译UVM测试平台。根据引用[2],编译阶段使用xrun -compile,但对于UVM,可能需要添加特定的选项,比如+incdir+来包含UVM头文件路径。例如,xrun -64bit -uvm -f filelist.f。 然后,仿真阶段可能需要加载UVM的测试用例。UVM通常通过+UVM_TESTNAME=test_name来指定要运行的测试用例。此外,启用日志记录可能需要+UVM_CONFIG_DB_TRACE等选项。 另外,用户可能关心如何控制仿真结束,比如UVM的objection机制。引用[3]提到需要正确使用raise_objection和drop_objection,以确保仿真不会提前终止。因此,在编写测试用例时,必须注意在适当的位置提起和撤销objection,这可能会影响xrun仿真的执行流程。 还需要考虑调试和波形记录。用户可能需要使用-gui参数启动仿真器的图形界面,或者使用-access选项控制访问权限,如引用[2]中的+access+rwc。 另外,官方文档可能会推荐一些最佳实践,比如使用单独的编译和仿真步骤,或者如何优化仿真性能。例如,使用-64bit启用64位模式,或者使用-clean进行清理,如引用[2]中的示例。 用户可能还希望了解如何处理不同的UVM版本,比如UVM 1.2,如引用[1]所提到的。因此,在xrun命令中指定正确的UVM版本很重要,可能需要使用-uvmversion 1.2或类似参数。 最后,需要验证整个流程是否正确,比如编写一个简单的UVM测试用例,使用xrun编译并运行,确保没有错误,并且仿真能够正确执行直到结束。这可能涉及到测试平台的结构、文件列表的编写以及正确的命令行参数。 总结一下,回答需要涵盖xrun命令的基本结构,UVM相关的参数,编译和仿真步骤,测试用例指定,objection机制的影响,调试选项,以及可能的常见问题解决方法。同时,参考用户提供的引用内容,特别是涉及xrun和UVM的部分,确保回答与用户已有知识衔接。</think>以下是基于Cadence官方文档整理的xrun运行UVM仿真详解,包含关键参数说明和操作步骤: ### 一、基础命令结构 使用xrun进行UVM仿真的典型命令包含三个阶段: ```bash xrun -64bit \ -uvm \ # 启用UVM支持 -uvmhome <uvm_library_path> \ # 指定UVM库路径[^1] +UVM_TESTNAME=my_test \ # 指定UVM测试用例 -f filelist.f \ # 文件列表 -access +rwc \ # 设置访问权限[^2] -gui # 图形界面调试 ``` ### 二、关键参数详解 1. **UVM版本控制** - `-uvm`:自动加载默认UVM库 - `-uvmversion 1.2`:显式指定UVM 1.2版本[^1] - `-uvmnoautocompile`:禁用自动编译UVM源码 2. **测试用例控制** ```bash +UVM_TESTNAME=my_test_case # 指定顶层测试类 +UVM_VERBOSITY=UVM_HIGH # 设置消息冗余级别 ``` 3. **仿真控制** ```bash -timescale 1ns/1ps # 设置仿真时间单位 -notimingchecks # 关闭时序检查(加速仿真) ``` ### 三、完整工作流程示例 1. **编写文件列表(filelist.f)** ``` -sv my_design.sv tb_top.sv ``` 2. **分阶段执行命令** ```bash # 编译阶段 xrun -64bit -compile -uvm -f filelist.f # 仿真阶段 xrun -64bit -R +UVM_TESTNAME=smoke_test -gui ``` 3. **Objection机制实现(验证平台内)** ```systemverilog task run_phase(uvm_phase phase); phase.raise_objection(this); // 测试逻辑 phase.drop_objection(this); endtask # [^3] ``` ### 四、调试技巧 1. **波形记录** ```bash xrun -64bit -access +rwc -linedebug ``` 在测试平台中使用: ```systemverilog initial begin $fsdbDumpfile("wave.fsdb"); $fsdbDumpvars(0, tb_top); end ``` 2. **日志分析** ```bash grep "UVM_ERROR" irun.log # 快速定位错误 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值