Microsoft MVP성태의 닷넷 이야기
The JIT does dead-code elimination in Debuggable code [링크 복사], [링크+제목 복사],
조회: 8709
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

출처: http://blogs.msdn.com/jmstall/archive/2006/03/13/dead_code_elimination.aspx

The JIT does dead-code elimination in Debuggable code

The desktop CLR JIT (at least x86) does dead-code elimination, even in debuggable code. This is obviously perfectly safe, transparent, (and good), from a program-execution perspective. But it can be a little surprising under the debugger because you can't set-next-statement (setip) to eliminated code.

In other words, if you have this C# code:
    Console.WriteLine("Hi!");
    if (false) {
        Console.WriteLine("Boo!"); // <-- can't setip here
    }
    Console.WriteLine("Bye");

You couldn't Set-next-statement to the "Boo!" line.  Normally this is fine, but every now and then it gets me. I think code-generators are more likely to produce code like that than a real person.

However, the JIT will not remove side-effect free expressions in debuggable code. For example,
    void Foo() {
        int x = 5;
        x ++;
    }

The JIT will not remove either of those lines, even though 'x' is unused and so they don't actually do anything for program behavior. This means you can still set and hit breakpoints on those lines, which is what you'd expect from debuggable (non-optimized) code.

In optimized-code, anything's fair game and a function like Foo() would very likely be optimized out of existence.

Published Monday, March 13, 2006 5:44 PM by jmstall

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

You can also stay up to date using your favorite aggregator by subscribing to the CommentRss Feed








[최초 등록일: ]
[최종 수정일: 4/14/2006]


비밀번호

댓글 작성자
 




... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
134정성태11/15/20058706Microsoft SQL Server Management Studio Express - Community Technical Preview (CTP) November 2005 [1]
242정성태4/19/20069066    답변글 정식 릴리스 - Microsoft SQL Server Management Studio Express
243정성태4/19/20068310    답변글 Microsoft SQL Server 2005 Express Edition Toolkit
245정성태4/19/20068894    답변글 Microsoft SQL Server 2005 Express Edition Service Pack 1
133정성태10/30/20059097VS.NET TS 버전을 제외하고 전부 나왔습니다. ^^
132정성태10/28/20059190IE Script 에서 ADO.Stream 개체를 사용 허가 유무를 지정.
131정성태10/27/20058620ASP.NET Spiced: AJAX
130정성태10/26/200510080RSA In JavaScript [1]파일 다운로드1
128정성태10/25/20058674Connecting to MS SQL Server from Unix파일 다운로드1
129정성태10/25/20058436    답변글 [추가]: SQL Server 2005 JDBC Driver Beta 2 Now Available
173정성태1/20/20068293        답변글 정식 릴리스: Microsoft SQL Server 2005 JDBC Driver
127정성태10/21/2005880264-bit Windows ; 언제, 그리고 왜 써야 할까?
126정성태10/19/20059177WSE(Web Services Enhancements) 3.0의 새로운 기능
125정성태10/14/20059092Cluster 가능한 StateServer 세션 관리자
124정성태10/14/20059244MapPoint Web Service SDK Version 4.0 for Visual Studio .NET 2003
123정성태10/14/20058964alpha release of the Python programming language for the .NET platform
161정성태1/3/20068983    답변글 [추가]: Beta release
184정성태8/12/20069514    답변글 Beta3 까지. ^^
190정성태3/10/20068787    답변글 Beta 4
221정성태3/31/20069059    답변글 Beta 5
246정성태4/21/20069069    답변글 Beta 6
295정성태5/24/20068112    답변글 Beta 7
122정성태10/13/20058910Determine whether service packs are installed on the .NET Framework
121정성태10/12/20058399.NET Reference Guide - 웹
120정성태11/14/20058806VS.NET Automation 과 VSIP
119정성태10/9/20058675Internet Information Services (IIS) 6.0 Resource Kit Tools (English)
... 31  32  33  34  35  36  37  38  39  40  41  [42]  43  44  45  ...