📄 macedon_trace.cc
字号:
//Copyright (c) 2004, Charles Killian, Adolfo Rodriguez, Dejan Kostic, Sooraj Bhat, and Amin Vahdat//All rights reserved.////Redistribution and use in source and binary forms, with or without//modification, are permitted provided that the following conditions are met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in// the documentation and/or other materials provided with the// distribution.// * Neither the names of Duke University nor The University of// California, San Diego, nor the names of its contributors// may be used to endorse or promote products derived from// this software without specific prior written permission.////THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"//AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE//IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE//DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE//FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL//DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR//SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER//CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,//OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE//USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE./* Adolfo Rodriguez Paul Pauca macedon-trace.cc 20011020*/#include "macedon.h"#include <stdarg.h>//#define MACEDON_TRACE_LIMIT // limit tracing to certain address//#define MACEDON_TRACE_TIME 370.0#define MACEDON_TRACE_NUM 3static int MACEDON_TRACE_LIST[MACEDON_TRACE_NUM] = {0x21c, 0x1d0, 0x1ce};pthread_mutex_t debug_lock;char trace_buf_[MACEDON_MAX_TRACE_SIZE+5];int LEDA_get_simulator_ID(int number_);// #define DISABLE_DEBUGGINGint global_keep_quiet = 0;int current_debug_level = 0;void debug (int level, char *format, ... ) { #ifndef DISABLE_DEBUGGING if ((level <= current_debug_level) && !global_keep_quiet) { struct timezone tz_; timeval clock_; gettimeofday(&clock_, &tz_); double now = (clock_.tv_sec+(double)clock_.tv_usec/1000000.0); printf ("%s %lf %d ", get_hostname(), now, pthread_self()); va_list arglist; va_start (arglist, format); vprintf (format, arglist); va_end (arglist); fflush(stdout); }#endif}void MACEDON_Agent::trace_print(){ if (keep_quiet) { return; } int size; double curtime = Scheduler::instance().clock(); int perform_trace=1; char name[80]; int simulator_ID=0;#ifdef NSPORT if (gethostname(name, sizeof(name)) == -1) { printf("Bad host name.\n"); exit(140); } if (!strncmp (name,"client", 6)) {// int number =participants.inf(participants.get_item(atoi(name+6))); int number =(atoi(name+6));// simulator_ID= LEDA_get_simulator_ID(number); }#endif#ifdef MACEDON_TRACE_LIMIT int i; perform_trace=0;a for (i=0; i<MACEDON_TRACE_NUM; i++) { if (here_.addr_ == MACEDON_TRACE_LIST[i]) perform_trace=1; }#endif#ifdef MACEDON_TRACE_TIME if (curtime < MACEDON_TRACE_TIME) perform_trace = 0;#endif if(perform_trace) { size = strlen(trace_buf_); if (strlen(trace_buf_) > MACEDON_MAX_TRACE_SIZE) { printf("Macedon trace buffer overrun Trying to trace %d when %d is the max\n", size, MACEDON_MAX_TRACE_SIZE); exit(4); }#ifndef NSPORT printf("Node %.8x (%f): %s", here_.addr_, curtime, trace_buf_);#else printf("Node %.8x %s %f %d %d %s", here_.addr_,name, curtime, pthread_self(), pt_type, trace_buf_); // printf("Nd %x %f %s", here_.addr_, curtime, trace_buf_);#endif fflush(stdout); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -