It's a little convoluted, but I think I found the problem. Apparently having multiple ignore strings hasn't worked in quite some time, if ever.
In src/python/m5/main.py, the ignore strings are passed into C++ one at a time: for ignore in options.debug_ignore: check_tracing() trace.ignore(ignore) And it's a little tricky to track down, but trace.ignore() corresponds to this swig-wrapped C++ function in src/python/swig/trace.i: inline void ignore(const char *expr) { Trace::ignore.setExpression(expr); } And if you track down setExpression() in src/base/match.cc, you find: void ObjectMatch::setExpression(const string &expr) { tokens.resize(1); tokenize(tokens[0], expr, '.'); } So it looks like every time you call trace.ignore(ignore) from python you're replacing the list of expressions in 'tokens' with the new string. So my guess based on looking at the code is that, when you pass in multiple strings, only the last one is actually taking effect---just a guess though. I see a few ways to fix this. I think the best way to fix it is to make a single call from python into C++ with the entire list of strings. There's already an overloaded version of setExpression for this ('ObjectMatch::setExpression(const vector<string> &expr)'). So it would just be a matter of exposing that function via swig in trace.i, and passing it the full options.debug_ignore list directly (no more for loop in python). If that sounds daunting, a more incremental quick fix would just be to change ObjectMatch::setExpression() to append the passed-in expression to the token vector instead of overwriting it. If you do fix it, and particularly if you choose the more comprehensive former fix, please upload your patch on reviewboard so we can consider putting it back in the main repository. Thanks, Steve On Sat, Oct 11, 2014 at 11:56 AM, Marcus Tshibangu <nmtsh...@ncsu.edu> wrote: > Thanks Steve, you are right I still have the old version with both debug* > and trace* optons but it shouldn't make a difference. it maybe that the > --trace-ignore option itself is not working for multiple objects only for > one object. because even append doesn't work for it but it works for other > options. for instance in the following command: > > *--debug-flags=Cache --debug-flags=BaseBus --trace-ignore='system.cpu0' > --trace-ignore='system.cpu1' --trace-file=trace.out* > > Cache and BaseBus are appended and I get their traces but for ignore part > it's not appended and doesn't even work for neither one of the objects. but > it works fine if i only have one ignore objects. > so can u do me a favor and use the above command in your new version (with > trace* replaced by debug* of course) and see if it's a version issue? if > not where can I go to fix this? > > On Sat, Oct 11, 2014 at 9:37 AM, Steve Reinhardt <ste...@gmail.com> wrote: > >> Sometimes you've got to use the source... from src/python/m5/main.py: >> >> option("--debug-ignore", metavar="EXPR", action='append', split=':', >> help="Ignore EXPR sim objects") >> >> Apparently colon is supposed to be the delimiter. The 'split' option is >> a Nate extension (see src/python/m5/options.py), so if colon is not >> actually working, it could be a bug. The "action='append'" part means that >> you can also specify --debug-ignore more than once to get the same effect, >> and that's built in to python optparse, so it's much less likely to be >> buggy. >> >> BTW, the --trace-* options were changed to --debug-* a while ago, so you >> may have an old version, but you can check your source to see if these >> comments still apply. >> >> Steve >> >> >> >> On Sat, Oct 11, 2014 at 12:24 AM, Marcus Tshibangu via gem5-users < >> gem5-users@gem5.org> wrote: >> >>> when I use *--trace-ignore='system.cpu0'*, I ignore everything related >>> to cpu0 from trace file. but if I try >>> *--trace-ignore='system.cpu0;system.cpu1' >>> *hoping that I can ignore also cpu1, it doesn't work. what is the best >>> separator for multiple simObjects in EXPR. I have tried comma, semicolon, >>> colon ,..., all types of separator but nothing seems to work. any idea? the >>> trace file is so big but i only need L2 cache trace info >>> >>> >>> >>> _______________________________________________ >>> gem5-users mailing list >>> gem5-users@gem5.org >>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users >>> >> >> > > > -- > Marcus Tshibangu > Graduate Student and Research Assistant > Electrical & Computer Engineering, NCSU > MRC 438, 2410 Campus Shore Dr., Raleigh NC 27606 > nmtsh...@ncsu.edu >
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users